Create a new payment
Initiates a payment request for processing. Returns immediately with an accepted response; the payment is processed asynchronously.
payment_instrument accepts three shapes at the gateway:
{ "id": "<instrument_id>" }— use an existing instrument{ "payment_method", "pan_data", ... }— gateway tokenizes card data first{ "payment_method", "data", ... }— gateway tokenizes encrypted payload first
Inline tokenization requires customer.id. The payment service always receives
payment_instrument.id after gateway processing.
Authorizations
API key for service-to-service or merchant authentication.
Headers
Unique identifier for request tracing. Generated by the client or server if not provided.
"550e8400-e29b-41d4-a716-446655440000"
Unique key for idempotent request processing. Duplicate requests with the same key are safely ignored.
"baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5"
The business account to act on, for platform use cases. When sent, that account is the merchant for the request: resources are created under it, reads and 404 checks are scoped to it, and per-merchant uniqueness (such as merchant_reference_id) applies within it. The API key's own account is recorded as the account acting on its behalf. Omit it to act on the API key's own account.
"550e8400-e29b-41d4-a716-446655440000"
Body
Create a new payment
- Existing instrument
- Inline PAN data
- Encrypted instrument data
Pay with a previously tokenized instrument. The gateway forwards
payment_instrument.id as-is; customer is optional.
Payment amount in minor units (e.g. 10000 for 100.00 SAR)
x >= 110000
Currency code (ISO 4217)
"SAR"
Device information (required for 3DS and risk assessment)
Reference an existing tokenized payment instrument by ID.
Processing details
Capture options
Order details
Customer details
3DS settings
Risk assessment data
Return URLs
Additional metadata
Channel ID for the payment
"019859f8-3149-7a55-8211-a8179675d269"
Online terminal to take the payment through; defaults to the business account's default terminal. Business accounts only, and not together with channel_id. Unrelated to device.terminal_id (the POS terminal).
"0b9d1c3e-6a51-4f6e-9a54-0f4f2b6e7d11"
Optional transaction-level split allocations in minor units. The full payment lands in the main acceptance account first; each allocation is then transferred to its destination, and the remainder stays in the main account. The allocations must not total more than amount. If sent, it must contain at least one item.
1