Skip to main content
POST
Create the payment a request-payload described

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Body

application/json

Request body for POST /v1/platform/payments/create-transaction.

extra="allow" is deliberate: a body carrying amount, currency, product_id or any other field this call does not take is refused by the service with a coded field_not_allowed that says the value comes from the request-payload — extra="forbid" would turn that into a generic 422 before the route ran.

reference
string<uuid>
required

The reference request-payload returned.

idempotency_key
string
required

A unique value you pick for this payment. If the same request reaches us twice, the payment happens once.

Required string length: 1 - 120
wallet_id
string<uuid> | null

The wallet to debit.

destination_wallet_id
string<uuid> | null

The wallet to credit.

bank_account_id
string<uuid> | null

The user's linked bank account — the source of a deposit, or the user's own bank on a withdrawal.

card_id
string<uuid> | null

The user's saved card.

vba_id
string<uuid> | null

The user's virtual bank account to move funds from.

payee_destination_id
string<uuid> | null

The payee's bank destination to pay.

payee_address_id
string<uuid> | null

The payee's address in the destination country, when the request-payload marked it required — a payout abroad, or a bank payout whose route asks for it. Sent only together with payee_destination_id.

card_acquiring_id
string<uuid> | null

The card-acquiring account to deposit into; defaults to the oldest approved one.

destinations
PaymentDestinationCreate · object[] | null

Credit several wallets from this one payment. Only when the request-payload reported destinations_supported; replaces destination_wallet_id; the legs must add up exactly to the amount on the reference.

user_id
string<uuid> | null

Safety cross-check against the wallet owner — and, for a card charged into a card-acquiring account, the payer being charged (required there).

metadata
Metadata · object

Your own key-value notes, stored with the payment.

payment_category
integer | null

Optional. The payment category code to tag this payment with, recording what the payment was for. Omit it and the payment is created exactly as before, untagged. If you do send one it must be a code your platform can currently use, otherwise the request is rejected and no money moves. Fetch the codes from GET /v1/platform/catalog/payment-categories. Codes are issued separately in test and live, so read the list in each mode — the same number does not mean the same category across them.

Required range: x > 0
Example:

1

notify_recipient
boolean
default:false

Ask us to notify the recipient (payee destinations).

from_hold
boolean
default:false

Spend from the wallet's held funds (wallet sources).

Response

Payment created

Standard response wrapper for single-object responses and errors.

Generic over the payload type. A route that declares CommonResponse[SomeModel] gets the real data schema rendered in OpenAPI/Swagger; a bare CommonResponse leaves data untyped.

status_code
integer
required

HTTP status code for the response.

data
any
required

Payload or error details.

query_generated_time
integer
required

UTC timestamp (milliseconds since epoch) when response was generated.