SETSimple Easy Transactions
SET DocsAPI reference and complianceUpdated 2026-11-08
Browse: SET API (Platforms)

SET API (Platforms) · Virtual accounts

Open a virtual account

POST/v1/virtual_accounts

Key scope: write · Success: 201

Bank details payers send to: a US account and routing number (ACH, wire, FedNow), a virtual IBAN (SEPA) or a UK account (Faster Payments). Each deposit is delivered as stablecoin to the wallet named (way 1) or settled on to the customer's bank through its Cash-Out Address (way 3).

Platform key beneficiary: {"type": "platform"} (the platform's own wallet) is refused with 403 platform_funds_not_allowed unless SET has allowed platform funds for that platform. Use the merchant's own wallet, {"type": "customer", …}.

Headers

Idempotency-Key string
Optional. The same key and body run once; a replay answers with Idempotent-Replayed: true. Kept 24 hours.

Body

customer stringrequired
An approved customer, endorsed for currency.
currency "usd" | "eur" | "gbp"
Default usd.
asset string
Way 1: the stablecoin and chain delivered, for example usdc-base, usdc-solana, usdt-ethereum, eurc-base.
address string
Way 1: the destination wallet.
beneficiary object
Way 1: whose wallet it is (Travel Rule). {type: "customer", walletType: "hosted" | "self_custodied", ownershipVerifiedAt}.
settleTo { cashOutAddress }
Way 3, instead of asset/address/beneficiary: settle each deposit to this Cash-Out Address and on to the bank.

Notes

  • USD account details carry the customer's name. For EUR and GBP accounts the beneficiary name is the provider's legal entity unless the account is in the customer's name: senders must use the beneficiaryName returned.
  • Deposit instructions are read live for each answer and never stored.

Errors

  • 400 asset_invalid
  • 400 address_invalid
  • 400 beneficiary_invalid
  • 400 wallet_type_invalid
  • 400 ownership_verified_at_invalid
  • 400 cash_out_address_invalid
  • 409 settle_route_not_supported
  • 409 endorsement_required
  • 409 verification_incomplete
  • 409 account_conflict
  • 401 api_key_required
  • 401 api_key_invalid
  • 401 api_key_wrong_mode
  • 403 scope_missing
  • 429 rate_limited

All codes: Errors.