> ## Documentation Index
> Fetch the complete documentation index at: https://direct-api.reap.global/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Treasury funding instructions

> Required API-key scope: `treasury_funding:read`.

Returns where to send your funds: a deposit wallet address for a crypto `network`, or bank details plus a unique Reference ID for a bank `currency`. Only send when `status` is `READY`; when it is `IN_PROGRESS`, retry after `retryAfterSeconds`. The same product and network keep the same wallet address, but every bank call returns a new Reference ID. See [Funding methods](/concepts/treasury/funding).



## OpenAPI

````yaml /openapi/2026-07-13.json get /2026-07-13/treasury/funding-instructions
openapi: 3.1.0
info:
  title: Reap Business Account API
  description: >

    # Introduction


    The Reap Business Account API lets you manage cards, spend and Treasury

    funding for your Business Account from your own systems. Every endpoint is

    authenticated with an API key sent in the `x-api-key` header and versioned

    with a date in the URL (`/2026-07-13/...`).


    Guides, concepts and the full setup reference live on the docs site:

    [direct-api.reap.global](https://direct-api.reap.global).



    ## Errors


    All errors share a single JSON envelope:


    ```json

    {
      "statusCode": 400,
      "type": "INVALID_REQUEST_ERROR",
      "code": "SPEND_CAP_TOO_LOW",
      "message": "Spend cap cannot be lower than the amount already spent on this card.",
      "param": "spendCap",
      "requestId": "01H..."
    }

    ```


    - `statusCode`: HTTP status, duplicated in the body.

    - `type`: coarse category, **always present**. Branch on this for
    retry/re-auth decisions.

    - `code`: stable, machine-readable identifier. Present only for
    programmatically-actionable errors.

    - `message`: human-readable explanation, safe to surface to users.

    - `param`: offending field for validation errors (optional).

    - `details`: structured extra context such as validation issues or required
    API-key scopes (optional).

    - `requestId`: correlation id; include it when contacting support
    (optional).


    The specific error codes each endpoint can return are documented on that

    endpoint's responses below.


    ### Error types


    | Type | Description |

    | --- | --- |

    | `INVALID_REQUEST_ERROR` | The request was rejected due to invalid input, a
    missing resource, or a business-rule violation (HTTP 400/404/409/422). |

    | `AUTHENTICATION_ERROR` | Authentication is missing or invalid (HTTP 401).
    |

    | `PERMISSION_ERROR` | The caller is authenticated but not permitted to
    perform the action (HTTP 403). |

    | `RATE_LIMIT_ERROR` | Too many requests; retry after a delay (HTTP 429). |

    | `API_ERROR` | An unexpected error occurred on our side (HTTP 5xx). |

    | `UPSTREAM_ERROR` | An upstream service returned an error (HTTP 502/503). |
  version: '2026-07-13'
  contact: {}
servers:
  - url: https://api.global.direct.reap.global
security: []
tags: []
paths:
  /2026-07-13/treasury/funding-instructions:
    get:
      tags:
        - Treasury
      summary: Get Treasury funding instructions
      description: >-
        Required API-key scope: `treasury_funding:read`.


        Returns where to send your funds: a deposit wallet address for a crypto
        `network`, or bank details plus a unique Reference ID for a bank
        `currency`. Only send when `status` is `READY`; when it is
        `IN_PROGRESS`, retry after `retryAfterSeconds`. The same product and
        network keep the same wallet address, but every bank call returns a new
        Reference ID. See [Funding methods](/concepts/treasury/funding).
      operationId: getTreasuryFundingInstructions
      parameters:
        - name: product
          required: true
          in: query
          description: The balance to fund. Use a product returned by funding options.
          x-nestjs_zod-parent-additional-properties: false
          schema:
            type: string
            enum:
              - CARD
              - PAYMENTS
              - OPTIMIZE
              - GENERAL
        - name: type
          required: true
          in: query
          description: >-
            `CRYPTO` returns a wallet address; `BANK_TRANSFER` returns bank
            details and a Reference ID.
          x-nestjs_zod-parent-additional-properties: false
          schema:
            type: string
            enum:
              - CRYPTO
              - BANK_TRANSFER
        - name: network
          required: true
          in: query
          description: >-
            A network code from funding options: a crypto network (`ETHEREUM`,
            `POLYGON`, `SOLANA`, `TRON`, `HYPERLIQUID`) or a bank rail (`FPS`,
            `CHATS`).
          x-nestjs_zod-parent-additional-properties: false
          schema:
            minLength: 1
            type: string
        - name: currency
          required: false
          in: query
          description: For bank transfers, the currency to send, for example `HKD`.
          x-nestjs_zod-parent-additional-properties: false
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TreasuryFundingInstructions'
              examples:
                ready:
                  summary: Crypto wallet ready
                  value:
                    product: CARD
                    type: CRYPTO
                    currency: null
                    network: ETHEREUM
                    networkName: Ethereum (ERC-20)
                    retryAfterSeconds: null
                    message: null
                    status: READY
                    instructions:
                      walletAddress: '0x1234567890abcdef1234567890abcdef12345678'
                      memo: null
                      supportedCurrencies:
                        - USDC
                        - USDT
                      minimumAmounts:
                        - amount: '2.00'
                          currency: USDC
                        - amount: '2.00'
                          currency: USDT
                      estimatedCreditMinutes: 5
                      estimatedRates:
                        - currency: USDC
                          targetCurrency: HKD
                          rate: '7.81'
                        - currency: USDT
                          targetCurrency: HKD
                          rate: '7.83'
                      ratesAsOf: '2026-10-01T03:00:00.000Z'
                provisioning:
                  summary: Solana provisioning
                  value:
                    product: CARD
                    type: CRYPTO
                    currency: null
                    network: SOLANA
                    networkName: Solana (SPL)
                    retryAfterSeconds: 10
                    message: Generating your network details…
                    status: IN_PROGRESS
                    instructions: null
                bankTransfer:
                  summary: Card bank instructions
                  value:
                    product: CARD
                    type: BANK_TRANSFER
                    currency: HKD
                    network: FPS
                    networkName: FPS
                    retryAfterSeconds: null
                    message: null
                    status: READY
                    instructions:
                      beneficiaryName: Reap Technologies Limited
                      beneficiaryAddress: 28/F, 1063 King’s Road, Quarry Bay, Hong Kong
                      bankName: Example Bank (Hong Kong) Limited
                      swiftCode: EXBKHKHH
                      bankCode: '999'
                      branchCode: '001'
                      accountNumber: '123456789'
                      accountNumberType: ACCOUNT_NUMBER
                      bankAddress: 1 Example Street, Central, Hong Kong
                      referenceId: IBM-ABCDEF
                      referenceRequired: true
                      expiresAt: null
        '400':
          description: '`FUNDING_METHOD_NOT_AVAILABLE`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                BAD_REQUEST:
                  summary: BAD_REQUEST
                  value:
                    statusCode: 400
                    type: INVALID_REQUEST_ERROR
                    message: Bad request.
                FUNDING_METHOD_NOT_AVAILABLE:
                  summary: FUNDING_METHOD_NOT_AVAILABLE
                  value:
                    statusCode: 400
                    type: INVALID_REQUEST_ERROR
                    code: FUNDING_METHOD_NOT_AVAILABLE
                    message: This funding method is not available for this product.
        '401':
          description: '`UNAUTHORIZED`, `AUTH_CREDENTIAL_MISSING`, `API_KEY_INVALID`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                UNAUTHORIZED:
                  summary: UNAUTHORIZED
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    message: Authentication required.
                AUTH_CREDENTIAL_MISSING:
                  summary: AUTH_CREDENTIAL_MISSING
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    code: AUTH_CREDENTIAL_MISSING
                    message: Authentication is required.
                API_KEY_INVALID:
                  summary: API_KEY_INVALID
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    code: API_KEY_INVALID
                    message: API key is invalid.
        '403':
          description: '`TREASURY_NOT_AVAILABLE`, `REAP_OPTIMIZE_TERMS_NOT_ACCEPTED`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                FORBIDDEN:
                  summary: FORBIDDEN
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    message: You do not have permission to perform this action.
                API_KEY_IP_NOT_ALLOWED:
                  summary: API_KEY_IP_NOT_ALLOWED
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: API_KEY_IP_NOT_ALLOWED
                    message: Request IP is not allowed for this API key.
                AUTH_INSUFFICIENT_PERMISSIONS:
                  summary: AUTH_INSUFFICIENT_PERMISSIONS
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: AUTH_INSUFFICIENT_PERMISSIONS
                    message: Insufficient permissions.
                    details:
                      requiredScopes:
                        - <required-scope>
                AUTH_METHOD_NOT_ALLOWED:
                  summary: AUTH_METHOD_NOT_ALLOWED
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: AUTH_METHOD_NOT_ALLOWED
                    message: >-
                      This endpoint does not accept the credential type
                      provided.
                TREASURY_NOT_AVAILABLE:
                  summary: TREASURY_NOT_AVAILABLE
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: TREASURY_NOT_AVAILABLE
                    message: Treasury is not available for this business.
                REAP_OPTIMIZE_TERMS_NOT_ACCEPTED:
                  summary: REAP_OPTIMIZE_TERMS_NOT_ACCEPTED
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: REAP_OPTIMIZE_TERMS_NOT_ACCEPTED
                    message: >-
                      Accept the Reap Optimize terms in the dashboard before
                      funding Optimize.
        '429':
          description: '`API_KEY_RATE_LIMITED`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                API_KEY_RATE_LIMITED:
                  summary: API_KEY_RATE_LIMITED
                  value:
                    statusCode: 429
                    type: RATE_LIMIT_ERROR
                    code: API_KEY_RATE_LIMITED
                    message: API key rate limit exceeded.
        '500':
          description: '`INTERNAL_ERROR`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                INTERNAL_ERROR:
                  summary: INTERNAL_ERROR
                  value:
                    statusCode: 500
                    type: API_ERROR
                    message: An unexpected error occurred.
      security:
        - apiKey: []
components:
  schemas:
    TreasuryFundingInstructions:
      type: object
      properties:
        status:
          type: string
          enum:
            - READY
            - IN_PROGRESS
          description: >-
            `READY` means `instructions` can be used now; `IN_PROGRESS` means
            retry after `retryAfterSeconds`.
        product:
          type: string
          enum:
            - CARD
            - PAYMENTS
            - OPTIMIZE
            - GENERAL
          description: >-
            The Reap balance this funding or transaction applies to: `CARD` (the
            card account), `PAYMENTS`, `OPTIMIZE` or `GENERAL`.
        type:
          type: string
          enum:
            - CRYPTO
            - BANK_TRANSFER
          description: Which kind of funding these instructions are for.
        currency:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The currency the instructions apply to, sent in addition for bank
            transfers.
        network:
          type: string
          description: >-
            The network these instructions are for. Always required: a crypto
            network (`ETHEREUM`, `POLYGON`, `SOLANA`, `TRON`, `HYPERLIQUID`) or
            a bank rail (`FPS`, `CHATS`).
        networkName:
          type: string
          description: The human-readable network name, for example `HyperEVM`.
        instructions:
          anyOf:
            - anyOf:
                - type: object
                  properties:
                    walletAddress:
                      type: string
                      minLength: 1
                      description: The deposit address. Send only on the requested network.
                    memo:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: An extra destination tag when the network requires one.
                    supportedCurrencies:
                      minItems: 1
                      type: array
                      items:
                        type: string
                      description: The stablecoins this address accepts.
                    minimumAmounts:
                      type: array
                      items:
                        type: object
                        properties:
                          amount:
                            type: string
                            description: Decimal string, preserving the asset precision.
                          currency:
                            type: string
                        required:
                          - amount
                          - currency
                      description: The minimum deposit per currency.
                    estimatedCreditMinutes:
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                      description: How long a deposit typically takes to credit.
                    estimatedRates:
                      anyOf:
                        - type: array
                          items:
                            type: object
                            properties:
                              currency:
                                type: string
                              targetCurrency:
                                type: string
                              rate:
                                type: string
                            required:
                              - currency
                              - targetCurrency
                              - rate
                        - type: 'null'
                      description: Indicative conversion rates, when applicable.
                    ratesAsOf:
                      anyOf:
                        - type: string
                          format: date-time
                          pattern: >-
                            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                        - type: 'null'
                      description: When `estimatedRates` were quoted, in UTC.
                  required:
                    - walletAddress
                    - memo
                    - supportedCurrencies
                    - minimumAmounts
                    - estimatedCreditMinutes
                    - estimatedRates
                    - ratesAsOf
                - type: object
                  properties:
                    beneficiaryName:
                      type: string
                      description: The account name to send to.
                    beneficiaryAddress:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The beneficiary's address.
                    bankName:
                      type: string
                      description: The beneficiary bank's name.
                    swiftCode:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The bank’s SWIFT/BIC code.
                    bankCode:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The local bank code.
                    branchCode:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The branch code.
                    accountNumber:
                      type: string
                      description: The account number to send to.
                    accountNumberType:
                      type: string
                      const: ACCOUNT_NUMBER
                      description: Always `ACCOUNT_NUMBER`.
                    bankAddress:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The bank's address.
                    referenceId:
                      type: string
                      description: >-
                        A fresh `IBM-XXXXXX` reference, generated on every call.
                        Put it in the transfer’s remarks so Reap can reconcile
                        it.
                    referenceRequired:
                      type: boolean
                      const: true
                      description: >-
                        Always `true`. The reference is required for fast
                        reconciliation.
                    expiresAt:
                      anyOf:
                        - type: string
                          format: date-time
                          pattern: >-
                            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                        - type: 'null'
                      description: Currently always `null`. Reference IDs don’t expire.
                  required:
                    - beneficiaryName
                    - beneficiaryAddress
                    - bankName
                    - swiftCode
                    - bankCode
                    - branchCode
                    - accountNumber
                    - accountNumberType
                    - bankAddress
                    - referenceId
                    - referenceRequired
                    - expiresAt
            - type: 'null'
          description: >-
            Crypto wallet details or bank transfer details, matching `type`.
            `null` while `IN_PROGRESS`.
        retryAfterSeconds:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          description: How long to wait before retrying when `IN_PROGRESS`.
        message:
          anyOf:
            - type: string
            - type: 'null'
          description: Extra context, for example why a method is unavailable.
      required:
        - status
        - product
        - type
        - currency
        - network
        - networkName
        - instructions
        - retryAfterSeconds
        - message
    ErrorResponse:
      type: object
      properties:
        statusCode:
          type: integer
          minimum: 100
          maximum: 599
          description: The HTTP status code, repeated in the body for convenience.
        type:
          type: string
          enum:
            - INVALID_REQUEST_ERROR
            - AUTHENTICATION_ERROR
            - PERMISSION_ERROR
            - RATE_LIMIT_ERROR
            - API_ERROR
            - UPSTREAM_ERROR
          description: >-
            The broad kind of error, for example `RATE_LIMIT_ERROR`. It's always
            present: use it to decide whether to retry, re-authenticate or fix
            the request.
        code:
          description: >-
            A stable, machine-readable error code, for example
            `CARD_CREATION_REQUIRES_DEPOSIT`. It's present when there's a
            specific action you can take, and each endpoint lists the codes it
            can return.
          type: string
        message:
          type: string
          description: >-
            A plain-English explanation of the error that's safe to show to your
            users.
        param:
          description: >-
            The request field that caused a validation error, for example
            `spendCap`.
          type: string
        details:
          description: >-
            Extra structured information, such as the list of validation issues
            or the API-key scopes your key is missing.
        requestId:
          description: >-
            A unique ID for this request. Include it when you contact Reap
            Support so the team can find it.
          type: string
      required:
        - statusCode
        - type
        - message
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Enter your API key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.