Create an outbound payment via the unified endpoint. This endpoint accepts any supported rail via the rail field with discriminator-based polymorphism.
Prerequisites:
active with sufficient balanceactivequoteId or set executionPreference: at_marketWhat happens after creation:
Payment is created in created status (returned in response)
If compliance screening is required, enters requires_action
If CoP/VoP verification is needed, enters requires_action with cop_required or
beneficiary_verification_required
Payment moves through in_review → processing → completed
Webhook payment.completed (or payment.failed) fires
Compliance gates are non-bypassable. If a payment requires action, it cannot proceed until the action is taken.
For simpler schemas, use rail-specific endpoints (POST /payments/ach, etc.) which don’t require the rail discriminator field.
API key issued at onboarding. Passed as a Bearer token in the Authorization header: Authorization: Bearer <api-key>. Identifies the caller and determines organization scope. Invalid or revoked keys return 401 with error type authentication_error.
Ed25519 or RSA-SHA256 asymmetric signature over the request payload (ADR-0015). Provides request integrity and non-repudiation. The signature covers the HTTP method, path, query string, request body, and timestamp. Invalid signatures return 401 with error type authentication_error.
Unix timestamp (seconds) of when the request was signed. Server rejects requests where the timestamp drifts beyond +/-60 seconds from server time to prevent replay attacks. Must match the timestamp used in the signature computation.
Idempotency key for this request. UUID v4 recommended. Max 128 characters. 24-hour retention. Same key + same body replays original response with Idempotency-Replayed: true. Same key + different body returns 409 (code: duplicate_idempotency_key). Same key while the original request is still processing returns 409 with a Retry-After header (code: idempotency_key_in_flight).
128"550e8400-e29b-41d4-a716-446655440000"
Unified payment creation. Specify the rail and payment method. For cross-currency, provide either a quoteId (use_quote) or set executionPreference to at_market. For rail-specific options (achType, secCode, chargeBearer, sepaType), use the dedicated rail endpoints (POST /payments/{rail}).
Account resource identifier.
^acc_[A-Za-z0-9]+$"acc_01953e1a5f4b7002"
Payment method resource identifier.
^pm_[A-Za-z0-9]+$"pm_01953e1a5f4b7300"
Payment rail used for delivery.
ach, fedwire, swift, crypto, open Counterparty resource identifier.
^cpt_[A-Za-z0-9]+$"cpt_01953e1a5f4b7004"
Monetary amount for request input. Value MUST be in smallest currency unit (e.g., cents for USD, pence for GBP). Server derives exponent from currency.
{ "currency": "USD", "value": "150000" }Monetary amount for request input. Value MUST be in smallest currency unit (e.g., cents for USD, pence for GBP). Server derives exponent from currency.
{ "currency": "USD", "value": "150000" }Which side of the payment amount is authoritative. 'send' means the sender's debit amount is fixed; 'receive' means the recipient's credit amount is fixed.
send, receive Controls FX execution on cross-currency payments. use_quote requires a pre-locked quoteId. at_market executes at current market rate.
use_quote, at_market FX quote resource identifier.
^qte_[A-Za-z0-9]+$"qte_01953e1a5f4b7006"
Purpose of payment. Required for SWIFT and SEPA payments to certain corridors.
goods_and_services, intercompany_transfer, investments, payroll, treasury_management, pension, tax_payment, trade_of_goods, financial_services, donations_and_charity, rent_and_lease, reimbursement, salary_and_compensation, other FATF Travel Rule data. Required for crypto payments above jurisdictional thresholds. Originator info is auto-populated from the customer entity when omitted.
Consumer-defined key-value store. Available on all primary resources. Max 50 keys. Keys must match ^[a-zA-Z0-9_]{1,40}$. Values are strings (max 500 chars) or null.
Payment created.
An outbound payment instruction. Created via the unified POST /payments endpoint or rail-specific convenience endpoints. All create the same resource with the same status machine and webhook events.
Payment resource identifier.
^pmt_[A-Za-z0-9]+$"pmt_01953e1a5f4b7005"
Customer resource identifier.
^cus_[A-Za-z0-9]+$"cus_01953e1a5f4b7000"
External lifecycle status of a payment. Terminal states: completed, returned, reversed, refunded, failed, canceled.
created, requires_action, in_review, processing, completed, returned, reversed, refunded, failed, canceled Payment rail used for delivery.
ach, fedwire, swift, crypto, open UTC timestamp in RFC 3339 / ISO 8601 format.
"2026-02-23T12:00:00Z"
UTC timestamp in RFC 3339 / ISO 8601 format.
"2026-02-23T12:00:00Z"
Account resource identifier.
^acc_[A-Za-z0-9]+$"acc_01953e1a5f4b7002"
Counterparty resource identifier.
^cpt_[A-Za-z0-9]+$"cpt_01953e1a5f4b7004"
Payment method resource identifier.
^pm_[A-Za-z0-9]+$"pm_01953e1a5f4b7300"
Payment direction. Always 'outbound' — inbound payments are tracked via the separate InboundPayment resource.
outbound Monetary amount with exponent-based precision. Value is in smallest currency unit (e.g., cents for USD). displayValue is the human-readable decimal.
{
"currency": "USD",
"exponent": 2,
"value": "150000",
"displayValue": "1500.00"
}Monetary amount with exponent-based precision. Value is in smallest currency unit (e.g., cents for USD). displayValue is the human-readable decimal.
{
"currency": "USD",
"exponent": 2,
"value": "150000",
"displayValue": "1500.00"
}Which side of the payment amount is authoritative. 'send' means the sender's debit amount is fixed; 'receive' means the recipient's credit amount is fixed.
send, receive Controls FX execution on cross-currency payments. use_quote requires a pre-locked quoteId. at_market executes at current market rate.
use_quote, at_market FX quote resource identifier.
^qte_[A-Za-z0-9]+$"qte_01953e1a5f4b7006"
FX rate information embedded in payments and conversions.
Fee details on payments and estimates. Per ADR-0006.
Monetary amount with exponent-based precision. Value is in smallest currency unit (e.g., cents for USD). displayValue is the human-readable decimal.
{
"currency": "USD",
"exponent": 2,
"value": "150000",
"displayValue": "1500.00"
}Whether the payment can currently be canceled.
cancelable, not_cancelable Reason why a payment is in requires_action status.
cop_required, beneficiary_verification_required, rfi_pending, quote_expired, return_action_required, compliance_hold, travel_rule_required Read-only compliance metadata on payments and counterparties.
Rail-specific details (ACH SEC code, SWIFT charges, etc.).
Consumer-defined payment reference.
"INV-2026-001"
Purpose of payment. Required for SWIFT and SEPA payments to certain corridors.
goods_and_services, intercompany_transfer, investments, payroll, treasury_management, pension, tax_payment, trade_of_goods, financial_services, donations_and_charity, rent_and_lease, reimbursement, salary_and_compensation, other Consumer-defined key-value store. Available on all primary resources. Max 50 keys. Keys must match ^[a-zA-Z0-9_]{1,40}$. Values are strings (max 500 chars) or null.
UTC timestamp in RFC 3339 / ISO 8601 format.
"2026-02-23T12:00:00Z"
ACH return reason code. Present only when rail is ach and the payment has been returned.
R01, R02, R03, R04, R05, R06, R07, R08, R09, R10, R11, R13, R14, R15, R16, R17, R20, R23, R29, R51 Blockchain network used for crypto payments. Present only when rail is crypto.
ethereum, solana, base, ink, sui On-chain confirmation status for crypto payments. Present only when rail is crypto.
pending_confirmation, confirmed, failed Travel rule data transmitted for this payment. Present only for crypto payments.
Beneficiary name verification result (CoP/VoP). Present when payment has undergone beneficiary verification.