Create an instant, fee-free payment to another entity on the OpenFX platform. The recipient is identified by their OPEN ID (@org.handle.currency), customer ID, or account ID — either via a pre-created payment method of type ‘open’ or an inline destination.
OPEN payments are instant — the response may return status: completed immediately. Same-currency only — use the FX engine first if conversion is needed. Compliance screening still applies per ADR-0007.
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"
Create an OPEN (internal network) payment. OPEN payments are instant, fee-free, and same-currency only. Specify the recipient via either a pre-created payment method or an inline destination (not both). Inline destinations support OPEN ID (@org.handle.currency) addressing.
Account resource identifier.
^acc_[A-Za-z0-9]+$"acc_01953e1a5f4b7002"
Payment method of type 'open'.
^pm_[A-Za-z0-9]+$"pm_01953e1a5f4b7300"
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" }Counterparty resource identifier.
^cpt_[A-Za-z0-9]+$"cpt_01953e1a5f4b7004"
Payment reference visible to both sender and recipient.
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.
OPEN 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.