Scheduled maintenanceScheduled maintenance: PayWise infrastructure maintenance is planned from Friday, October 9 at 7:00 p.m. ET through Monday, October 12 at 8:00 a.m. ET. Sandbox and Production services may experience intermittent interruptions during this period. Existing PayWise service URLs and SFTP hostnames will remain unchanged.
Skip to main content

Create payment request

Wrapper endpoint for payment-request upstream route.

New to PayWise payments? Use the Checkout Builder.

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.

Using Checkout Builder​

If you are new to PayWise Checkout, use the Checkout Builder to generate a valid POST /payments/request payload and test in sandbox.

fraud_check​

When used, fraud_check belongs inside transaction_request (defaults to 0 when omitted).

For a full worked example payload, see Recipe 1: Checkout.

Endpoint​

POST /payments/request

Query Parameters​

  • version (string, required) - API contract version. Use exactly 2024-10-01.
  • diagnostics (boolean, optional) - Non-production docs only. Set true to include extra diagnostic metadata (for example observed_client_ip).

Header Parameters​

  • PW-subscription-key (string, required)
  • PW-origin-country (string, required)
  • PW-request-date (string, required) - UTC request timestamp formatted as YYYY-MM-DD HH:mm:ss.
  • PW-ip-address (string, required)
  • User-Agent (string, required)

Header Constraints​

KeyDescriptionExampleData typeRequirementField Length
PW-subscription-keyDeveloper key available after portal registration. Production key is shared on request.eed0d85c530c4b26a91d09b783d8fab3stringmandatory32
PW-origin-countryISO Alpha-2 country code where the transaction is created.TTstringmandatory2
PW-request-dateCurrent request timestamp. Format: YYYY-MM-DD HH:mm:ss (UTC).2014-10-08 16:01:31stringmandatory19
PW-ip-addressFixed institution IP used for PayWise network-level validation.255.255.255.255stringconditional8-16
User-AgentIn programmable environments, this avoids running into Cloudflare issues.Mozilla/5.0 (Windows NT 10.0; Win64; x64)stringmandatory255

Request Body​

{
"api_key": "<your_api_key>",
"fraud_check": 0,
"transaction_request": {
"id": "checkout_smoke_0001",
"amount": "25.00",
"currency": "TTD",
"description": "checkout example request",
"fees": {
"pays_fees": 1,
"payer_covers": 0
},
"payees": [
{
"mobile_number": "+1XXXXXXXXXX",
"amount": "25.00",
"delay_days": 0
}
],
"payers": [
{
"mobile_number": "+1XXXXXXXXXX",
"first_name": "First",
"last_name": "Last",
"email": "[email protected]",
"payment_channel": "payment_link",
"payment_method": "card",
"amount": "25.00"
}
],
"urls": {
"success": "https://example.com/checkout/success",
"notify": "https://example.com/checkout/notify",
"error": "https://example.com/checkout/error",
"callback": "https://example.com/checkout/callback"
}
}
}

Downloads​

Implementation Notes​

  • PW-request-date must be sent in UTC using the format YYYY-MM-DD HH:mm:ss.

payment_channel and payment_method​

payment_channelWhen to useAllowed payment_method values
agentIn-person payment at a PayWise agent locationcash, card
direct_posQR generated for in-store direct scan-and-paywallet, card, credit, debit, qr_code
payment_linkHosted remote payment link sent by SMS, email, or similar channelswallet, card, credit, debit

Validation rules​

  • payment_channel=agent must use payment_method=cash or payment_method=card.
  • payment_channel=direct_pos must not use payment_method=cash.
  • payment_channel=payment_link must not use payment_method=cash.
  • If an unsupported combination is submitted, the wrapper returns 400 and rejects the request.

Responses​

200 - Wrapper-normalized response envelope (success cases).​

Example: success​

{
"status": "success",
"code": 200,
"message": "Payment request created successfully",
"request_id": "request-example-a8Q3x",
"payment_details": {
"id": "opaque-payment-id-a8Q3x",
"transaction_id": "merchant-order-a8Q3x",
"amount": "25.00",
"fraud_check_status": "skipped",
"payers": [
{
"amount": "25.00",
"status": "Pending",
"url": "https://sandbox.paywise.co/example-hosted-payment"
}
]
}
}

400 - Wrapper-normalized response envelope (400)​

Example: error​

{
"status": "error",
"code": 400,
"message": "api_key is required",
"request_id": "4d55f2c0-487a-4a10-8c0a-5a136eb7f176",
"timestamp": "2026-02-11T03:59:45.554Z",
"observed_client_ip": {
"request_ip": "172.64.80.1",
"socket_remote_address": "172.64.80.1"
}
}

Notes​

This endpoint page is generated from openapi/pw-wrappers.2024-10-01.yaml.