POST
/api/v2/banking/payoutsPayout Step 4: create the payout after OTP verification.
Use the VerificationToken returned from POST /api/v2/banking/payouts/initiate after it has been verified by POST /api/v2/banking/otp/verify. New public Equals approvals use the server quote captured at initiation. Changed or expired terms require a new initiation and approval.
Authentication
Send your API key in the x-api-key header on every request.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| userId (query) | unknown | No |
Request body
application/json
| Field | Type | Required | Description |
|---|---|---|---|
| VerificationToken | string | No | Token returned by POST /api/v2/banking/payouts/initiate after it has been verified through the OTP endpoint. Required for POST /api/v2/banking/payouts. Token returned by POST /api/v2/banking/payouts/initiate after it has been verified through the OTP endpoint. Required for final payout creation. |
| ApprovalDeviceId | string (uuid) | No | Public banking API only. Omit for email OTP; an enrolled device ID requests a signed challenge. |
| ApprovalPasskeyId | string (uuid) | No | |
| CheckId | string | Yes | CheckId from POST /api/v2/banking/payouts/check. If the quote is refreshed on the OTP screen, send the latest quote/order ID here. CheckId returned by POST /api/v2/banking/payouts/check. When refreshing quotes during OTP, send the latest quote/order ID here. |
| QuoteRequestId | string | No | QuoteRequestId returned by POST /api/v2/banking/quotations. QuoteRequestId returned by POST /api/v2/banking/quotations. |
| PayeeId | unknown | Yes | Local payee ID from the payee list endpoint. Local payee ID from GET /api/v2/banking/payees. |
| Amount | string | Yes | Payout amount as a decimal string. |
| Currency | string | Yes | Payout currency, usually the payee currency. |
| FromCurrency | string | No | Currency to fund the payout from. When omitted, the payout currency is used. This must reflect the currency selected by the caller, because an Equals Money budget can hold multiple currencies under the same budget ID. |
| BalanceId | string | No | Optional provider balance or budget ID to fund the payout from. Optional provider balance or Equals Money budget ID used as funding source. |
Responses
201 — Created
| Field | Type | Required | Description |
|---|---|---|---|
| Id | unknown | No | |
| ExternalId | string | No | |
| ClientTransactionId | string | No | |
| Status | string | No | |
| Message | string | No | |
| FromAmount | string | No | |
| FromCurrency | string | No | |
| ToAmount | string | No | |
| ToCurrency | string | No | |
| Fees | array of PayoutFeeDto | No | |
| CreatedAt | string (date-time) | No |
400 — Bad Request
| Field | Type | Required | Description |
|---|---|---|---|
| Message | string | No | |
| Code | string | No | |
| Status | unknown | No | |
| ValidationErrors | object | No | |
| Details | string | No |
401 — Unauthorized
| Field | Type | Required | Description |
|---|---|---|---|
| Message | string | No | |
| Code | string | No | |
| Status | unknown | No | |
| ValidationErrors | object | No | |
| Details | string | No |
404 — Not Found
| Field | Type | Required | Description |
|---|---|---|---|
| Message | string | No | |
| Code | string | No | |
| Status | unknown | No | |
| ValidationErrors | object | No | |
| Details | string | No |
500 — Internal Server Error
| Field | Type | Required | Description |
|---|---|---|---|
| Message | string | No | |
| Code | string | No | |
| Status | unknown | No | |
| ValidationErrors | object | No | |
| Details | string | No |
Example request
curl -X POST "https://{base_url}/api/v2/banking/payouts" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"CheckId":"…","PayeeId":"…","Amount":"…","Currency":"…"}'This page is generated from the live OpenAPI specification and always matches the current API.