Skip to main content
Use an issued bank account when the customer needs reusable bank details. For one-time funding instructions tied to a specific amount, use Receive funds instead.

Before you start

You need a customer ID, a ready bank capability for the intended method and currency, and a ready issued wallet owned by the same customer. With allowPending, you can save the request while the selected bank still reviews the customer. Complete open work through Capabilities and tasks.

1. Create or select the settlement wallet

Create an issued wallet through Accounts and wallets, then read it again. Continue only when its current status permits settlement. Store its response-derived data.id as SETTLEMENT_WALLET_ID. Do not use an external wallet for settlement.accountId.

2. Create the issued bank account

Use POST /v3/customers/{customerId}/accounts with these headers:
Request headers
Send this request body:
Request body
Store the returned data.id as BANK_ACCOUNT_ID. Also retain data.status, data.openTaskIds, data.details, and the settlement relationship. Optional request fields:

Choose the bank

Send institution when the customer needs bank details from a specific bank. Swipelux reserves one issued account per customer, method, currency, and institution. A request without institution returns 409 conflict if the customer already has an issued account for that method and currency at any bank. A request with institution returns 409 conflict only if an account for that bank already exists. Account reads return the selected bank as institution with id, name, and bic. bic can be null. Idempotency applies to the selected bank. Replaying the same request returns the original account. Changing institution under the same Idempotency-Key returns 409 idempotency_conflict.

Save the request before bank approval

By default, Swipelux accepts an issued bank account request only after the bank capability is ready. To collect the customer’s account setup earlier, send allowPending: true with institution:
Request body with allowPending
While the bank’s application is under review, the account returns status: "in_review" with statusReason.code set to waiting_for_approval. The response also includes applicationId and the application’s openTaskIds. Complete those tasks through Capabilities and tasks. The saved request keeps its account ID, settlement wallet, and account slot. After the application and capability are ready, Swipelux provisions bank details under the same BANK_ACCOUNT_ID. Keep reading that ID. Do not create another request. While the saved request waits, it holds the account slot. Another allowPending request for the same slot under a different Idempotency-Key returns 409 conflict. The problem’s holder.accountId names the waiting account. Read that account instead of retrying. If the application is rejected, canceled, or archived first, the account becomes rejected. It no longer holds the account slot.

Choose the settlement currency

By default, deposits settle in the settlement wallet’s currency. Set settlement.currency to USDC or USDT to choose the delivered asset independently of the wallet’s currency:
Request body with settlement currency
USDT requires a USD account and a settlement wallet on a network that supports USDT delivery. Otherwise the request returns 400 invalid_settlement_target. Account reads return the saved choice, including while the account is provisioning. The bank account ID and wallet ID have different roles. Read provisioning and bank details through the bank account ID. Use the settlement wallet ID to identify where deposits are credited.

3. Monitor provisioning

Read GET /v3/customers/{customerId}/accounts/{accountId} after creation and after each relevant webhook. Keep the customer interface pending while details is absent. If openTaskIds is not empty, complete the latest tasks and refetch the account. Do not infer readiness from elapsed time. If the account was saved with allowPending: true, it stays in_review with statusReason.code set to waiting_for_approval until the bank approves the application. If the latest statusReason.code is awaiting_assignment, create the first pay-in for the same customer, capability, and settlement wallet through Receive funds, then read the bank account again. Follow this branch only when the current account requests it.

4. Present bank details safely

Display only the complete details returned by the latest account read. When details.referenceRequired is true, show the exact details.reference and make it copyable. When it is false, do not invent a reference. For issued swift accounts, display details.bankName, details.swiftCode (the receiving bank’s BIC), details.accountNumber, details.accountHolderName, and details.accountHolderAddress when returned. Senders must copy the beneficiary address exactly into the international wire. Also show details.bankAddress and any intermediary bank fields that the account returns. These bank details are reusable. Do not replace them with funding coordinates from a quoted pay-in, which belong only to that transfer. Next, add Webhooks so provisioning updates reach your application without keeping the customer on a polling screen.