Create a payment intent
Create and start one Provider-neutral Payment intent. `payment_method` and every payer field required by that method are required before persistence. Operational Configuration selects execution. Use `POST /checkouts` when Checkout should collect payer input. Once persisted, creation returns the current projection, including processing after uncertain dispatch. `Idempotency-Key` is required admission identity; `merchant_reference` is required business identity.
Create and start one Provider-neutral Payment intent. payment_method and every payer field required by that method are required before persistence. Operational Configuration selects execution. Use POST /checkouts when Checkout should collect payer input. Once persisted, creation returns the current projection, including processing after uncertain dispatch. Idempotency-Key is required admission identity; merchant_reference is required business identity.
Authorization
apiKey Merchant API key pair. Send as Authorization: Basic base64(publicKey:secretKey) — username is the public key (pk_live_… / pk_test_…), password is the secret key (sk_live_… / sk_test_…). The public key prefix determines the environment of every order created by the request — there is no body, query, or header override.
In: header
Header Parameters
Merchant retry identity for this create request. Reuse only with the exact same request fields.
^[!-~]+$1 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Create one Provider-neutral Payment intent. payment_method and every payer field required by the selected method must be present; Operational Configuration selects execution.
Positive integer amount in the currency's minor units, encoded as a string to preserve precision (e.g. "10000" for MYR 100.00).
^[1-9]\d*$ISO 3166-1 alpha-2 country code, e.g. "MY".
^[A-Z]{2}$ISO 4217 currency code (e.g. "MYR", "USD") or a 3–6 letter token symbol. Uppercase.
^[A-Z]{3,6}$Customer identity. Required fields vary by routed payment method.
1 <= length <= 256Unique Merchant business reference for the Payment. Transport retries use Idempotency-Key.
1 <= length <= 256Value in
- "FPX"
- "PROMPTPAY"
- "TRUEMONEY"
- "BANK_TRANSFER"
- "TNG"
- "BOOST"
- "CARD"
- "GRABPAY"
- "ALIPAY"
- "UMOBILE"
- "EMONEI"
- "DUITNOW_QR"
- "WECHAT_PAY"
- "UNIONPAY"
Flat canonical options for the selected payment_method. Required fields are determined by the resolved payment route; FPX accepts only an optional bank.
Optional Merchant final return URL after Init completes browser continuation. It is never sent to the browser as a Provider return URL.
urilength <= 2048Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/payment_intents" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "amount": "string", "country": "string", "currency": "string", "customer": { "property1": null, "property2": null }, "merchant_reference": "string", "payment_method": "FPX" }'{ "amount": "10000", "captured_amount": "0", "completed_at": null, "country": "MY", "created_at": "2026-05-09T12:34:00.000Z", "currency": "MYR", "environment": "test", "failure_code": null, "expires_at": "2026-05-09T12:49:00.000Z", "id": "dord_01HZYABCDXYZ", "merchant_reference": "order-2026-05-09-0001", "next_action": { "expires_at": "2026-05-09T12:49:00.000Z", "type": "redirect_to_url", "url": "https://api.example.com/continue/payment_123" }, "object": "payment_intent", "payment_method": "FPX", "receipt": null, "status": "requires_action", "updated_at": "2026-05-09T12:34:02.000Z"}Get a payment intent GET
Get the current committed payment intent projection without initiating Provider work. Scoped to the authenticating merchant and the API key's Environment; intents that belong to another merchant or Environment return 404 indistinguishably from unknown ids.
Cancel pending payment POST
Request cancel-pending at the routed provider for a payment that is still pending. The provider call runs durably; poll the intent or wait for webhooks until status is terminal.