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

# Create a funding method

> Create the funding methods for an asset on an account. This provisions the
receiving methods it needs (deriving crypto deposit addresses per chain
and/or wiring the bank virtual accounts that serve the asset) and enables
the ledger balance.

Idempotent: repeating the call links the asset onto already-provisioned
addresses and banks instead of creating duplicates. Returns the funding
methods now serving the asset, with full deposit details.

Requires the organization to be verification-approved (KYC) and to have the
RECEIVE service enabled.



## OpenAPI

````yaml POST /v1/funding-methods
openapi: 3.0.0
info:
  title: nxos API
  version: 1.0.0
  contact:
    name: nxos
    url: https://nxos.io
  description: |-
    The nxos platform API provides programmatic access to accounts, balances,
    quotes, and trades. All endpoints require API key authentication.
servers:
  - url: https://api.nxos.io
    description: Production
    variables: {}
  - url: https://api.sandbox.nxos.io
    description: Sandbox
    variables: {}
security: []
tags:
  - name: Accounts
  - name: Quotes
  - name: Beneficiaries
  - name: Fiat Payouts
  - name: Crypto Payouts
  - name: Sandbox Faucet
  - name: Nxosnet
  - name: Fees
  - name: Funding Methods
  - name: Transactions
  - name: Organizations
  - name: Authorizations
  - name: Webhooks
    description: >-
      Register an HTTPS endpoint to receive events (organization verification
      and

      transaction status changes) instead of polling. Deliveries are signed;
      verify

      the `svix-signature` header before acting on an event.


      See the [Webhooks guide](https://docs.nxos.io/core-concepts/webhooks) for
      the

      delivery format, signature verification, retries, and broker behavior.
      Payload

      shapes are documented in the `…Event` models below.
paths:
  /v1/funding-methods:
    post:
      tags:
        - Funding Methods
      description: >-
        Create the funding methods for an asset on an account. This provisions
        the

        receiving methods it needs (deriving crypto deposit addresses per chain

        and/or wiring the bank virtual accounts that serve the asset) and
        enables

        the ledger balance.


        Idempotent: repeating the call links the asset onto already-provisioned

        addresses and banks instead of creating duplicates. Returns the funding

        methods now serving the asset, with full deposit details.


        Requires the organization to be verification-approved (KYC) and to have
        the

        RECEIVE service enabled.
      operationId: FundingMethods_create
      parameters:
        - $ref: '#/components/parameters/ApiKeyAuth'
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFundingMethodRequest'
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - object
                  - data
                  - hasMore
                  - nextCursor
                properties:
                  object:
                    type: string
                    enum:
                      - list
                    description: Object type. Always `list` for paginated responses.
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/FundingMethodResource'
                    description: Array of results.
                  hasMore:
                    type: boolean
                    description: Whether more results are available beyond this page.
                  nextCursor:
                    type: string
                    nullable: true
                    description: >-
                      Cursor to pass as `cursor` query parameter for the next
                      page. Null when there are no more results.
                description: Paginated list envelope. All list endpoints return this shape.
        '400':
          description: The server could not understand the request due to invalid syntax.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error409'
        '429':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error429'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
components:
  parameters:
    ApiKeyAuth:
      name: Authorization
      in: header
      required: true
      description: 'Bearer token. Format: `Bearer <api_key>`'
      schema:
        type: string
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Unique key per logical operation. UUID v4 recommended. Max 255
        characters.
      schema:
        type: string
  schemas:
    CreateFundingMethodRequest:
      type: object
      required:
        - accountId
        - asset
      properties:
        accountId:
          type: string
          description: >-
            Account to create the funding methods on. Must belong to the API
            key's organization.
        asset:
          type: string
          description: >-
            Asset code to enable (e.g. `USDC`, `EUR`). Provisions every
            receiving method that serves this asset.
      description: >-
        Request to create funding methods for an asset on an account. Provisions
        the receiving methods (deposit addresses / wire accounts) the asset
        needs.
      example:
        accountId: acct_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
        asset: USDC
    FundingMethodResource:
      anyOf:
        - $ref: '#/components/schemas/CryptoFundingMethod'
        - $ref: '#/components/schemas/BankFundingMethod'
      description: >-
        A funding method, discriminated by `type`. Use the `type` field to
        narrow

        the `details` payload:
          - `CRYPTO_ADDRESS` → `details` is `CryptoFundingMethodDetails`
          - `BANK`           → `details` is `BankFundingMethodDetails`
    Error400:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      description: Standard error response returned by all endpoints on failure.
      example:
        error:
          code: invalid_request
          message: The request body is malformed or missing required fields.
          requestId: req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
    Error401:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      description: Standard error response returned by all endpoints on failure.
      example:
        error:
          code: missing_api_key
          message: No Authorization header provided.
          requestId: req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
    Error403:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      description: Standard error response returned by all endpoints on failure.
      example:
        error:
          code: forbidden
          message: Your organization is not enabled for this action.
          requestId: req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
    Error404:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      description: Standard error response returned by all endpoints on failure.
      example:
        error:
          code: not_found
          message: The requested resource was not found.
          requestId: req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
    Error409:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      description: Standard error response returned by all endpoints on failure.
      example:
        error:
          code: quote_expired
          message: The quote has expired.
          requestId: req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
    Error429:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      description: Standard error response returned by all endpoints on failure.
      example:
        error:
          code: rate_limited
          message: 'Rate limit exceeded: 1000 requests per minute. Retry in 23 seconds.'
          requestId: req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
    Error500:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorBody'
      description: Standard error response returned by all endpoints on failure.
      example:
        error:
          code: internal_error
          message: An unexpected server error occurred.
          requestId: req_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
    CryptoFundingMethod:
      type: object
      required:
        - object
        - fundingMethodId
        - accountId
        - name
        - type
        - status
        - supportedAssets
        - details
        - createdAt
      properties:
        object:
          type: string
          enum:
            - funding_method
          description: Object type. Always `funding_method`.
        fundingMethodId:
          type: string
          description: Unique funding method identifier.
        accountId:
          type: string
          description: Account this funding method belongs to.
        name:
          type: string
          nullable: true
          description: >-
            Display name for this funding method (set when the funding method
            was created).
        type:
          type: string
          enum:
            - CRYPTO_ADDRESS
          description: Discriminator. Always `CRYPTO_ADDRESS` for this variant.
        status:
          allOf:
            - $ref: '#/components/schemas/FundingMethodStatus'
          description: Current status of this funding method.
        supportedAssets:
          type: array
          items:
            type: string
          description: >-
            Asset codes that can be sent to this address — e.g. `["USDC",
            "USDT"]`.
        details:
          allOf:
            - $ref: '#/components/schemas/CryptoFundingMethodDetails'
          description: Crypto-specific deposit details.
        createdAt:
          allOf:
            - $ref: '#/components/schemas/dateTimeString'
          description: When this funding method was created.
      description: Crypto-deposit funding method — has an on-chain address.
    BankFundingMethod:
      type: object
      required:
        - object
        - fundingMethodId
        - accountId
        - name
        - type
        - status
        - supportedAssets
        - details
        - createdAt
      properties:
        object:
          type: string
          enum:
            - funding_method
          description: Object type. Always `funding_method`.
        fundingMethodId:
          type: string
          description: Unique funding method identifier.
        accountId:
          type: string
          description: Account this funding method belongs to.
        name:
          type: string
          nullable: true
          description: Display name for this funding method.
        type:
          type: string
          enum:
            - BANK
          description: Discriminator. Always `BANK` for this variant.
        status:
          allOf:
            - $ref: '#/components/schemas/FundingMethodStatus'
          description: Current status of this funding method.
        supportedAssets:
          type: array
          items:
            type: string
          description: Asset codes accepted on this funding method (e.g. `["USD", "EUR"]`).
        details:
          allOf:
            - $ref: '#/components/schemas/BankFundingMethodDetails'
          description: Bank-specific wire instructions.
        createdAt:
          allOf:
            - $ref: '#/components/schemas/dateTimeString'
          description: When this funding method was created.
      description: Bank-deposit funding method — has wire instructions.
    ErrorBody:
      type: object
      required:
        - code
        - message
        - requestId
      properties:
        code:
          allOf:
            - $ref: '#/components/schemas/ErrorCode'
          description: Machine-readable error code.
        message:
          type: string
          description: Human-readable error message.
        requestId:
          type: string
          description: Unique identifier for this request, useful for debugging.
    FundingMethodStatus:
      type: string
      enum:
        - ACTIVE
        - INACTIVE
        - DELETED
      description: Funding method status.
    CryptoFundingMethodDetails:
      type: object
      required:
        - address
        - chainName
        - chainDisplayName
      properties:
        address:
          type: string
          description: >-
            On-chain deposit address. Send any of `supportedAssets` to this
            address.
        chainName:
          type: string
          description: >-
            Chain identifier (e.g. `ETHEREUM_MAINNET`, `SOLANA_MAINNET`,
            `BASE_MAINNET`, `TRON_MAINNET`).
        chainDisplayName:
          type: string
          description: >-
            Human-readable chain name (e.g. `Ethereum`, `Solana`, `Base`,
            `Tron`).
      description: Crypto deposit details — the on-chain address customers send funds to.
    dateTimeString:
      type: string
      description: ISO 8601 timestamp string.
    BankFundingMethodDetails:
      type: object
      required:
        - bankName
        - accountNumber
        - iban
        - swiftCode
        - beneficiaryName
        - beneficiaryAddress
        - bankAddress
        - reference
        - intermediaryBanks
      properties:
        bankName:
          type: string
          description: Receiving bank name.
        accountNumber:
          type: string
          nullable: true
          description: >-
            Account number (used by some regional networks; null when IBAN is
            the canonical identifier).
        iban:
          type: string
          nullable: true
          description: IBAN (international bank account number).
        swiftCode:
          type: string
          nullable: true
          description: SWIFT/BIC code of the receiving bank.
        beneficiaryName:
          type: string
          nullable: true
          description: Beneficiary name to put on the wire.
        beneficiaryAddress:
          type: string
          nullable: true
          description: Beneficiary address.
        bankAddress:
          type: string
          nullable: true
          description: Receiving bank's address.
        reference:
          type: string
          nullable: true
          description: >-
            Payment reference / memo to include on the wire so we can correlate
            the deposit to the right account.
        intermediaryBanks:
          type: array
          items:
            $ref: '#/components/schemas/IntermediaryBank'
          description: >-
            Intermediary banks in the wire path. Empty when the wire can be sent
            direct to the receiving bank.
      description: >-
        Wire instructions — what to put on a SWIFT transfer to fund this
        account.
    ErrorCode:
      type: string
      enum:
        - missing_api_key
        - authentication_failed
        - invalid_api_key
        - forbidden
        - swap_direction_not_allowed
        - service_not_enabled
        - not_found
        - organization_not_found
        - account_not_found
        - quote_not_found
        - beneficiary_not_found
        - transaction_not_found
        - funding_method_not_found
        - authorization_not_found
        - nxosnet_handle_not_found
        - quote_expired
        - quote_already_used
        - beneficiary_already_archived
        - beneficiary_not_archived
        - beneficiary_blocked
        - nxosnet_not_enabled
        - nxosnet_handle_taken
        - chain_send_failed
        - idempotency_key_in_use
        - idempotency_request_in_flight
        - invalid_request
        - insufficient_funds
        - validation_error
        - share_token_invalid
        - verification_import_unsupported
        - verification_required
        - rate_limited
        - webhooks_unavailable
        - internal_error
      description: All possible error codes returned by the API.
    IntermediaryBank:
      type: object
      required:
        - bankName
        - swiftCode
      properties:
        bankName:
          type: string
          description: Intermediary bank name.
        swiftCode:
          type: string
          description: SWIFT/BIC code for the intermediary bank.
        bankAddress:
          type: string
          description: Intermediary bank address (optional).
      description: >-
        An intermediary bank in a wire path — used when the destination bank
        can't be reached directly via SWIFT.

````