v1

latestOpenAPI 3.1.02026-07-26165182724.7 KB
Consumer

Create Unified Standing Order

Create one SWAP_ONLY standing order per eligible non-EUR account in a wallet under a single SCA challenge. Today only direction=CRYPTO_TO_FIAT is supported: every crypto account in the wallet will auto-swap its deposits into the wallet's EUR account, with no external SEPA payout. FIAT_TO_CRYPTO is intentionally not supported here — use the per-account /create endpoint, since a single EUR source has many possible crypto destinations.

The endpoint is all-or-nothing: if any candidate account already has an active SO, the call rejects up front. On success, the SCA challenge returned covers the entire batch — confirm it once via the standard /confirm endpoint and one SO row is materialized per account.

post/wallet-create

Request body

userIdstring uuid required

Unique ID of the user that owns the wallet

walletIdstring required

The wallet to set up auto-conversion on. All eligible non-EUR accounts in this wallet will receive a SWAP_ONLY standing order.

direction'CRYPTO_TO_FIAT' | 'FIAT_TO_CRYPTO' required

Direction of the unified standing orders. Today only CRYPTO_TO_FIAT is supported — FIAT_TO_CRYPTO is rejected (see route description for why).

verificationMethod'sms' | 'totp' | 'passkey'

SCA factor to issue the setup challenge against. Defaults to sms. For passkey, run PASSKEY_APPROVAL_START before calling /wallet-confirm. Honoured only when the application has scaEnabled=true; ignored otherwise.

fixedFeestring

Fixed fee in cents to apply to each materialized SO (optional override).

percentFeeBpsstring

Percentage fee in basis points to apply to each materialized SO (optional override).

Response

success

challengeIdstring uuid required

Unique challenge ID to be used when confirming via /wallet-confirm. Covers the whole batch under a single SCA.

dateExpiresstring date-time required

Date at which this challenge ID expires.

verificationMethod'sms' | 'totp' | 'passkey'

SCA factor the challenge is bound to.

affectedAccountIdsstring[] required

The account IDs in the wallet that will each get a SWAP_ONLY standing order on confirm.

skippedAccountIdsstring[]

Account IDs excluded from the batch because an active standing order already covers them.

Example response

{
  "dateExpires": "2024-07-25T06:49:13.606Z"
}