Skip to main content
This page is for developers testing the Virtual Account flow in sandbox. It lists the test values you need per provider (Noah, Due, Brale) to create customers, quotes, and orders. For the full integration walkthrough, see the Virtual Account Integration Guide.
Sandbox limitation: Provider sandboxes do not move real money. Onramp: you can complete the flow end to end for Noah and Due Network. Call the simulate endpoint instead of sending fiat, and the transaction reaches SETTLED — see Simulate a deposit. Brale has no sandbox deposit simulator, so there you stop at creating the virtual bank account. Offramp: the furthest you can reach is receiving a deposit address. There is no way to settle an offramp in sandbox.

Before you start

  1. Create a customerId via POST /accounts/customers (see Step 1 of the integration guide). If you need a business customer for KYB testing, contact Meld.
  2. Complete KYC for the customer (see below). Wait for the provider’s KYC to reach APPROVED, not just Sumsub.
  3. Ask Meld support to enable whitelabel mode for each provider you intend to test. Without it, virtual account calls fail with 403 WHITELABEL_NOT_ENABLED even for a fully KYC’d customer.
  4. Fetch supported crypto currencies for your intended provider — call GET /service-providers/properties/crypto-currencies with serviceProviders and categories=CRYPTO_VIRTUAL_ACCOUNT_ONRAMP (or CRYPTO_VIRTUAL_ACCOUNT_OFFRAMP) to see what’s available in sandbox.
  5. Use the test values below when creating quotes and orders. Wallet addresses can be any valid address for the token’s chain.

Sandbox KYC

To KYC a user in sandbox, follow the instructions in KYC testing → Meld KYCes the user.

Noah

Onramp (buy)

Offramp (sell)


Due Network

Note: Due does not operate in the US. Use a non-US customer and EUR as the fiat currency.

Onramp (buy)

Offramp (sell)


Brale

Brale does not support quotes. All exchanges are 1:1 between USD and USD-backed stablecoins.

Onramp (buy)


Simulate a deposit

You cannot send real fiat to a sandbox virtual account, so there is nothing to trigger settlement. Call the endpoint below instead: Meld creates a test deposit into the standing account you fetched with POST /payments/virtual-account/deposit-instructions, and the provider’s normal webhooks settle it exactly as in production.
Sandbox only. In production this endpoint returns 404.
Onramp (payin) only. There is no offramp equivalent — an offramp cannot be settled in sandbox.

Simulate the deposit

Endpoint: POST /payments/mock/headless/virtual-account/simulate-deposit Repeat the provider, rail, currencies and destination wallet from your deposit instructions, and set amount to the amount you want deposited.

Confirm settlement

Settlement is asynchronous, so the transaction does not exist yet when the simulate call returns. Normally you react to the TRANSACTION_CRYPTO_* webhooks you subscribed to in Payins. If you are scripting a test, or have not set up a sandbox webhook endpoint, poll instead until a new transaction reads SETTLED — typically 30 to 90 seconds. Endpoint: GET /payments/transactions?customerIds={customerId} Abridged — a transaction carries many more fields. See Payins → Fetch the full transaction for the full shape.

Troubleshooting


Testing tips

  • Wallet addresses can be any valid address for the token’s chain. Some providers validate that the address format matches (e.g. a TRON address for USDT_TRON).
  • To see which currencies and payment methods a provider supports in sandbox, call GET /service-providers/properties/crypto-currencies with the provider name and relevant category.
  • Start with the onramp (buy) flow — it is the most complete path in sandbox.
  • Include X-Idempotency-Key on order requests so you can safely retry without creating duplicates.
  • Webhook events (TRANSACTION_CRYPTO_PENDING, etc.) may or may not fire in sandbox depending on the provider. If yours do not arrive, poll GET /payments/transactions instead — see Simulate a deposit.