> ## Documentation Index
> Fetch the complete documentation index at: https://docs.endaoment.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit settled grant

> Server-to-server partner grant intake after the partner has settled the inbound custodian transfer. Authorized by the tech-platform API key alone — no donor bearer token or acting-user context required.



## OpenAPI

````yaml https://api.endaoment.org/oas-json post /v1/transfers/partner/grant-submissions
openapi: 3.0.0
info:
  title: Endaoment API
  description: >-
    The official Endaoment API endpoints. Dev (canary) = newest features;
    Staging (stable) = pre-production.
  version: 0.0.0-dev
  contact: {}
servers:
  - url: https://api.endaoment.org
    description: Production
security: []
tags:
  - name: Partner Endpoints
    description: Tech-platform partner server-to-server APIs
  - name: Authentication
    description: OAuth callers, API keys, and session verification
  - name: Funds
    description: Donor-advised fund lifecycle
  - name: Donations
    description: Donation pledges, supported assets, and impact totals
  - name: Portfolios
    description: Investment portfolio catalog
  - name: Nonprofit Organizations
    description: Nonprofit lookup, subprojects, and missing-org intake
  - name: Grant Transfers
    description: Grant and entity transfers
  - name: Collaboration
    description: Collaborator recommendations and fund collaboration
  - name: Activity
    description: Public and scoped activity feeds
paths:
  /v1/transfers/partner/grant-submissions:
    post:
      tags:
        - Partner Endpoints
      summary: Submit settled grant
      description: >-
        Server-to-server partner grant intake after the partner has settled the
        inbound custodian transfer. Authorized by the tech-platform API key
        alone — no donor bearer token or acting-user context required.
      operationId: InternalTransfersController_createPartnerGrantSubmission_v1
      parameters:
        - name: x-api-key
          in: header
          description: >-
            Tech-platform API key for a partner configured for settled
            operations
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PartnerGrantSubmissionInputDto'
      responses:
        '200':
          description: Idempotent replay of an existing partner grant submission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerGrantSubmissionDto'
        '201':
          description: Partner grant submission created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerGrantSubmissionDto'
        '400':
          description: Malformed input or semantic validation failure
        '401':
          description: Missing or invalid tech-platform API key
        '403':
          description: >-
            Partner is not configured for settled operations or does not own the
            origin fund
        '404':
          description: Origin fund, destination org, or destination subproject not found
        '409':
          description: Idempotency or funding-transfer replay conflict
        '413':
          description: Request body exceeds the partner grant submission size limit
        '422':
          description: >-
            Partner account metadata or reported identifiers do not match
            configured records
      security:
        - ApiKey: []
components:
  schemas:
    PartnerGrantSubmissionInputDto:
      type: object
      properties:
        idempotencyKey:
          type: string
          description: Client-generated idempotency key for transport-level replay
          format: uuid
          example: 8fc9cf75-7813-4f2f-95d6-7c9f84f0f6ef
        originFundId:
          type: string
          description: Origin fund id for the partner-managed DAF
          format: uuid
          example: 2b8108d8-30fc-4c62-9b93-07ee1f8b8455
        inboundCustodianTransfer:
          $ref: '#/components/schemas/PartnerGrantInboundCustodianTransferDto'
        grants:
          description: Grant instructions for this submission
          minItems: 1
          maxItems: 50
          type: array
          items:
            $ref: '#/components/schemas/PartnerGrantInstructionDto'
      required:
        - idempotencyKey
        - originFundId
        - inboundCustodianTransfer
        - grants
    PartnerGrantSubmissionDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
        partnerId:
          type: string
        originFundId:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - Accepted
            - RedeemQueued
            - RedeemSubmitted
            - RedeemRegistered
            - InsufficientGrantingAccountBalance
            - GrantingAccountToCircleRequested
            - GrantingAccountToCircleCompleted
            - CircleToAmpSubmitted
            - AmpTransferCompleted
            - ConsolidatedToFund
            - Failed
            - Cancelled
        inboundCustodianTransfer:
          $ref: '#/components/schemas/PartnerGrantInboundCustodianTransferResponseDto'
        grants:
          type: array
          items:
            $ref: '#/components/schemas/PartnerGrantSubmissionGrantDto'
      required:
        - id
        - partnerId
        - originFundId
        - status
        - inboundCustodianTransfer
        - grants
    PartnerGrantInboundCustodianTransferDto:
      type: object
      properties:
        amountMicroDollars:
          type: string
          description: Settled inbound custodian transfer amount in microdollars
          example: '125000000000'
        partnerFundingTransferId:
          type: string
          description: Partner's stable business id for the inbound funding transfer
          example: alt-journal-987654
          maxLength: 127
        sourcePartnerAccountIdentifier:
          type: string
          description: >-
            Opaque partner correlation identifier for the source DAF. Not a
            custodial account number.
          example: 550e8400-e29b-41d4-a716-446655440000
          minLength: 8
          maxLength: 64
        destinationPartnerAccountIdentifier:
          type: string
          description: >-
            Opaque partner correlation identifier for the destination sundry
            account. Not a custodial account number.
          example: f4b9d2c8-1e6a-4a3f-b5d7-08c92e6f4a17
          minLength: 8
          maxLength: 64
        settledAtUtc:
          format: date-time
          type: string
          description: >-
            UTC timestamp when the inbound custodian transfer settled on the
            partner side
          example: '2026-05-04T14:32:01.000Z'
      required:
        - amountMicroDollars
        - partnerFundingTransferId
        - sourcePartnerAccountIdentifier
        - destinationPartnerAccountIdentifier
        - settledAtUtc
    PartnerGrantInstructionDto:
      type: object
      properties:
        destinationOrgId:
          type: object
          description: Destination organization id
          format: uuid
          nullable: true
        destinationSubprojectId:
          type: object
          description: Destination subproject id
          format: uuid
          nullable: true
        amountMicroDollars:
          type: string
          description: Grant line amount in microdollars
          example: '75000000000'
        specialInstructions:
          type: object
          description: Optional binding instructions for the receiving organization
          maxLength: 2000
          nullable: true
        hideMyInfoFromOrg:
          type: boolean
          description: >-
            When true, donor identity is hidden from the destination
            organization
          default: false
      required:
        - amountMicroDollars
    PartnerGrantInboundCustodianTransferResponseDto:
      type: object
      properties:
        amountMicroDollars:
          type: string
          description: Inbound transfer amount in microdollars
          example: '125000000000'
        status:
          type: string
          description: Reported settlement status
          example: ReportedSettled
        partnerFundingTransferId:
          type: string
          description: Partner's stable business id for the inbound funding transfer
        sourcePartnerAccountIdentifier:
          type: string
          description: Reported source partner account identifier
        destinationPartnerAccountIdentifier:
          type: string
          description: Reported destination partner account identifier
        settledAtUtc:
          type: string
          description: Reported settlement timestamp in ISO-8601 format
      required:
        - amountMicroDollars
        - status
        - partnerFundingTransferId
        - sourcePartnerAccountIdentifier
        - destinationPartnerAccountIdentifier
        - settledAtUtc
    PartnerGrantSubmissionGrantDto:
      type: object
      properties:
        asyncGrantTransferId:
          type: string
          description: Created async grant transfer id
          format: uuid
        destinationOrgId:
          type: object
          description: Destination organization id
          format: uuid
          nullable: true
        destinationSubprojectId:
          type: object
          description: Destination subproject id
          format: uuid
          nullable: true
        amountMicroDollars:
          type: string
          description: Grant line amount in microdollars
          example: '75000000000'
        specialInstructions:
          type: object
          description: Special instructions
          nullable: true
        hideMyInfoFromOrg:
          type: boolean
          description: Whether donor identity is hidden from the destination organization
        asyncGrantStatus:
          type: string
          description: Async grant status
          enum:
            - PendingLiquidation
            - Liquidated
            - Cancelled
      required:
        - asyncGrantTransferId
        - amountMicroDollars
        - hideMyInfoFromOrg
        - asyncGrantStatus
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key

````