Recipe 1: Checkout
Important​
For this Checkout flow:
- No session minting is required
- No token encryption is required
- No transaction id encryption is required
Use these Checkout endpoints:
POST /payments/requestPOST /payments/statusPOST /payments/cancel(only when needed)
Flow​
- Create payment request
- Capture
payment_details_idfrom response - Poll payment status with
payment_details_id - Optionally cancel with
payment_details_id
Create Request​
Endpoint: POST /payments/request
{
"api_key": "<your_api_key>",
"transaction_request": {
"id": "checkout_demo_20260326_0001",
"amount": "50.00",
"fees": {
"pays_fees": 1,
"payer_covers": 0
},
"tax": "0",
"tip": "0",
"convenience": "0",
"currency": "TTD",
"description": "Checkout recipe example",
"customer_reference": "cust_demo_0001",
"metadata": [
{
"key": 1,
"value": "recipe-1"
}
],
"payees": [
{
"mobile_number": "+1XXXXXXXX01",
"amount": "50.00",
"delay_days": 0,
"fees_covered": 0,
"metadata": [
{
"key": 1,
"value": "merchant-payee"
}
]
}
],
"urls": {
"success": "https://example.com/success",
"notify": "https://example.com/notify",
"error": "https://example.com/error",
"callback": "https://example.com/callback"
},
"payers": [
{
"mobile_number": "+1XXXXXXXX02",
"first_name": "<payer_first_name>",
"last_name": "<payer_last_name>",
"email": "[email protected]",
"payment_channel": "direct_pos",
"payment_method": "wallet",
"amount": "50.00"
}
]
},
"fraud_check": 0
}
Download Postman-ready request body
Expected success response includes a payment_details_id to use for status/cancel.
Status Check​
Endpoint: POST /payments/status
{
"api_key": "sandbox_api_key",
"payment_details_id": "pay_123"
}
Cancel Request (Optional)​
Endpoint: POST /payments/cancel
{
"api_key": "sandbox_api_key",
"payment_details_id": "pay_123"
}