---
title: "Create or retrieve standing virtual-account onramp deposit instructions"
method: POST
path: "/payments/virtual-account/deposit-instructions"
tags: ["Headless"]
---

# Create or retrieve standing virtual-account onramp deposit instructions

`POST /payments/virtual-account/deposit-instructions`

## Request

- Base URL: `https://api-sb.meld.io`
- URL: `https://api-sb.meld.io/payments/virtual-account/deposit-instructions`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/meld/apis/bank-linking/docs/payments/virtual-account/deposit-instructions/post.ts> (a function with typed inputs; its response is checked against the schema)

Provisions a standing virtual bank account for recurring onramp deposits, or returns the existing instructions when the same customer, provider, payment method, currency pair, and destination wallet were already set up.

## Headers

- `X-Idempotency-Key` string, uuid

## Request body

- VirtualAccountDepositInstructionsRequest: Request to provision or retrieve standing virtual-account deposit instructions
  - `customerId` string, required: Meld customer id
  - `customerPhoneNumber` string: Customer phone number — required when paymentMethodType is MOBILE_MONEY and the provider requires it
  - `destinationCurrencyCode` string, required: Destination cryptocurrency code
  - `destinationWalletAddress` string, required: Wallet address that will receive the purchased cryptocurrency
  - `paymentMethodType` 'ACH' | 'SEPA' | 'PIX' | 'MOBILE_MONEY', required: Desired type of virtual account to create for sending the fiat currency to
  - `serviceProvider` 'NOAH' | 'DUENETWORK', required: Service provider used for creating the virtual deposit account
  - `sourceCurrencyCode` string, required: Source fiat currency code

## Response `201`

Deposit instructions created or returned successfully

- VirtualAccountDepositInstructionsResponse: Standing virtual-account deposit instructions
  - `customerId` string, required: Meld customer id
  - `depositInstructionsId` string, required: Unique id for this deposit instruction row
  - `destinationCurrencyCode` string, required: Destination cryptocurrency code
  - `destinationWalletAddress` string, required: Destination wallet address for the purchased crypto
  - `paymentMethodType` 'ACH' | 'SEPA' | 'PIX' | 'MOBILE_MONEY', required: Type of the virtual account created
  - `receivingBankInformation` union: Bank information for the fiat transfer; shape depends on paymentMethodType
    - object: Receiving bank details for ACH
      - `paymentMethodType` string, required
      - `accountNumber` string: Bank account number
      - `routingNumber` string: Bank routing number
      - `bankName` string: Receiving bank name
      - `accountHolderName` string: Account holder name on the virtual account
    - object: Receiving bank details for mobile money
      - `paymentMethodType` string, required
      - `mobileMoneyReference` string: Mobile money reference
      - `bankName` string: Receiving bank name
      - `accountHolderName` string: Account holder name on the virtual account
    - object: Receiving bank details for PIX
      - `paymentMethodType` string, required
      - `pixKey` string: PIX key
      - `bankName` string: Receiving bank name
      - `accountHolderName` string: Account holder name on the virtual account
    - object: Receiving bank details for SEPA
      - `paymentMethodType` string, required
      - `iban` string: IBAN
      - `bic` string: BIC / SWIFT code when provided by the provider
      - `bankName` string: Receiving bank name
      - `accountHolderName` string: Account holder name on the virtual account
  - `serviceProvider` 'NOAH' | 'DUENETWORK', required: Service provider
  - `serviceProviderDetails` object: Raw provider-specific fields not mapped into receivingBankInformation
  - `sourceCurrencyCode` string, required: Source fiat currency code

## Other responses

- `400`: Bad Request : check request values and format
- `401`: Invalid credentials
- `403`: Unauthenticated or authenticated with insufficient access
- `500`: Internal Error

---

[API](https://skmtc.dev/meld/apis/bank-linking.md) - [All operations](https://skmtc.dev/meld/apis/bank-linking/llms.txt) - [OpenAPI document](https://skmtc.dev/meld/apis/bank-linking/revisions/818d6079a611?raw)
