Recipe 1: Checkout
The Checkout Builder guides you through creating a valid /payments/request payload, including fees, payment methods, split payers, split payouts, optional notify/callback URLs, and sandbox testing.
Open Checkout Builder (Sandbox) Open Checkout Builder (Production)
Sandbox keys work only with https://sandbox-api.paywise.co. Production keys can process real transactions and may require approvals.
Going live? Follow the Production go-live checklist.
This recipe is the fastest way to understand the end-to-end Checkout integration: build a valid POST /payments/request payload, send a sandbox request, and confirm the result using GET /payments/status.
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/requestGET /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
Recommended sandbox journey​
- Open Sandbox Dashboard:
https://sandbox-dashboard.paywise.co - Create sandbox personal + business test accounts
- Install the Sandbox PayWise App and sign in as the business user
- Copy your sandbox business
api_keyfrom the portal credentials area - Generate or use a sandbox
pw-subscription-key - Open Checkout Builder and generate a payload
- Send a sandbox request and capture
payment_details_id - Check
GET /payments/status - View the request in Transactions and Logs
Production go-live​
After sandbox success, follow the production readiness checklist before sending live payments:
https://docs.paywise.co/getting-started/go-live-checklist
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: GET /payments/status
Example query:
GET /payments/status?version=2024-10-01&api_key=<your_api_key>&payment_details_id=<payment_details_id>
Cancel Request (Optional)​
Endpoint: POST /payments/cancel
{
"api_key": "sandbox_api_key",
"payment_details_id": "pay_123"
}