Skip to main content
POST

Authorizations

x-api-key
string
header
required

API key for service-to-service or merchant authentication.

Headers

x-correlation-id
string<uuid>

Unique identifier for request tracing. Generated by the client or server if not provided.

Example:

"550e8400-e29b-41d4-a716-446655440000"

x-idempotency-key
string<uuid>

Unique key for idempotent request processing. Duplicate requests with the same key are safely ignored.

Example:

"baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5"

x-business-account-id
string<uuid>

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.

Example:

"550e8400-e29b-41d4-a716-446655440000"

Body

application/json

Create a new payment

Pay with a previously tokenized instrument. The gateway forwards payment_instrument.id as-is; customer is optional.

amount
integer
required

Payment amount in minor units (e.g. 10000 for 100.00 SAR)

Required range: x >= 1
Example:

10000

currency
string
required

Currency code (ISO 4217)

Example:

"SAR"

device
object
required

Device information (required for 3DS and risk assessment)

payment_instrument
object
required

Reference an existing tokenized payment instrument by ID.

processing
object

Processing details

capture_options
object

Capture options

order
object

Order details

customer
object

Customer details

three_ds
object

3DS settings

risk
object

Risk assessment data

return_info
object

Return URLs

metadata
object

Additional metadata

Example:
channel_id
string<uuid>

Channel ID for the payment

Example:

"019859f8-3149-7a55-8211-a8179675d269"

terminal_id
string<uuid>

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).

Example:

"0b9d1c3e-6a51-4f6e-9a54-0f4f2b6e7d11"

splits
object[]

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.

Minimum array length: 1

Response

Payment accepted for processing.

payment
object
required

Available action links (HATEOAS)