
E-Wallet (Money In)
Create an e-wallet checkout order to receive payment from a customer via ShopeePay or Dana.
| Method | Path | Format | Authentication |
|---|---|---|---|
| POST | /api/v1.0/ewallet-native/{account_id}/create-checkout | json | OAuth 2.0 with Access Token |
| Field | Value | Type | Mandatory | Length | Description | Example |
|---|---|---|---|---|---|---|
| X-PARTNER-ID | api_key | Alphanumeric | Mandatory | API key obtained from the merchant dashboard. | b3ed7d4b-a96c-6c08-b3c7-12c3124242d9 | |
| Accept | application/json | Alphabetic | Mandatory | Specifies JSON as the expected response format. | application/json | |
| Content-Type | application/json | Alphabetic | Mandatory | Specifies JSON as the request body format. | application/json | |
| Authorization | Bearer {bearerToken} | Alphanumeric | Mandatory | Bearer token obtained from the get access token endpoint. | Bearer eyJ0eXAiOiJKV1{…} |
| Parameter | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| amount | Numeric | Required | Payment amount in IDR. Min/max limits are based on your merchant agreement. | 50000 |
| ewallet_vendor | String | Required | E-wallet vendor code. Accepted values: EWALLET_SHOPEEPAY, EWALLET_DANA | EWALLET_SHOPEEPAY |
| expired_at | String | Optional | Expiration datetime for the checkout (ISO 8601). Must be in the future. Defaults to 30 minutes from creation. | 2026-02-10T12:00:00+07:00 |
| customer_name | String | Optional | Customer name for reference (max 255 characters). | John Doe |
| customer_email | String | Optional | Customer email address (max 255 characters). | john@example.com |
| customer_phone | String | Optional | Customer phone number (max 20 characters). | 081234567890 |
| merchant_redirect_url | String | Optional | Custom URL to redirect the customer after payment completion. Must be a valid URL (max 2048 characters). If not provided, the default SingaPay redirect page is used. | https://yoursite.com/payment/callback |
{
"amount": 50000,
"ewallet_vendor": "EWALLET_SHOPEEPAY",
"customer_name": "John Doe",
"customer_email": "john@example.com",
"customer_phone": "081234567890",
"merchant_redirect_url": "https://yoursite.com/payment/callback"
}
cURL Example:
curl -X POST "https://api.singapay.id/api/v1.0/ewallet-native/01K8AESCCKYSD98Z3P9RSDA36W/create-checkout" \
-H "X-PARTNER-ID: b3ed7d4b-a96c-6c08-b3c7-12c3124242d9" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." \
-d '{
"amount": 50000,
"ewallet_vendor": "EWALLET_SHOPEEPAY",
"customer_name": "John Doe",
"customer_email": "john@example.com",
"customer_phone": "081234567890",
"merchant_redirect_url": "https://yoursite.com/payment/callback"
}'
{
"amount": 100000,
"ewallet_vendor": "EWALLET_DANA",
"expired_at": "2026-02-10T15:00:00+07:00",
"customer_name": "Jane Smith",
"customer_phone": "089876543210",
"merchant_redirect_url": "https://yoursite.com/payment/callback"
}
| Field | Type | Mandatory | Description | Example |
|---|---|---|---|---|
| status | Numeric | Mandatory | HTTP Status Code | 200 |
| success | Boolean | Mandatory | 2xx is true. 4xx–5xx is false. | true |
| data | Object | Conditional | Transaction data (present on success) | - |
| > id | Integer | Mandatory | Unique transaction ID | 42 |
| > account_id | Integer | Mandatory | Account ID | 15 |
| > reff_no | String | Mandatory | Unique reference number for this transaction | EWT01JKABCDEF123456789 |
| > status | String | Mandatory | Transaction status | open |
| > status_computed | String | Mandatory | Computed status (auto-detects expiration) | open |
| > is_expired | Boolean | Mandatory | Whether the checkout URL has expired | false |
| > ewallet_vendor | String | Mandatory | E-wallet vendor code | EWALLET_SHOPEEPAY |
| > amount | Decimal | Mandatory | Payment amount | 50000.00 |
| > total_amount | Decimal | Mandatory | Total transaction amount | 50000.00 |
| > merchant_fee | Decimal/Null | Optional | Total fee charged to the merchant | 1000.00 |
| > net_amount | Decimal/Null | Optional | Net amount after fees | 49000.00 |
| > checkout_url | String/Null | Optional | Web redirect URL for payment | https://wsa.wallet.airpay.co.id/… |
| > checkout_url_app | String/Null | Optional | Deep link URL to open the e-wallet app directly | shopeeid://… |
| > vendor_reference_no | String/Null | Optional | Reference number from the e-wallet vendor | SP202602091234567 |
| > merchant_redirect_url | String/Null | Optional | Custom redirect URL provided at checkout creation | https://yoursite.com/payment/callback |
| > additional_info | Object/Null | Optional | Additional vendor-specific data | - |
| > customer_name | String/Null | Optional | Customer name | John Doe |
| > customer_email | String/Null | Optional | Customer email | john@example.com |
| > customer_phone | String/Null | Optional | Customer phone | 081234567890 |
| > balance_after | Decimal/Null | Optional | Account balance after settlement | 1500000.0 |
| > has_recon | Boolean | Mandatory | Whether transaction has been reconciled | true |
| > recon_at | String/Null | Optional | Reconciliation timestamp (ISO 8601) | 2026-02-09T14:00:00+00:00 |
| > recon_by | String/Null | Optional | Reconciled by | system |
| > has_settle | Boolean | Mandatory | Whether transaction has been settled | true |
| > settle_at | String/Null | Optional | Settlement timestamp (ISO 8601) | 2026-02-09T15:00:00+00:00 |
| > settle_by | String/Null | Optional | Settled by | system |
| > has_settle_request | Boolean | Mandatory | Whether settlement has been requested | false |
| > payment_channel | String/Null | Optional | Payment channel used | SHOPEEPAY |
| > payment_vendor_code | String/Null | Optional | Vendor payment code | EWALLET_SHOPEEPAY |
| > is_auto_settle | Boolean | Mandatory | Whether auto-settlement is enabled | false |
| > settlement_method | String/Null | Optional | Settlement method | null |
| > expired_at | String/Null | Optional | Checkout expiration time (ISO 8601) | 2026-02-09T13:30:00+00:00 |
| > created_at | String | Mandatory | Transaction creation time (ISO 8601) | 2026-02-09T13:00:00+00:00 |
| > updated_at | String | Mandatory | Last update time (ISO 8601) | 2026-02-09T13:00:00+00:00 |
| > events_count | Integer | Mandatory | Number of events logged for this transaction | 1 |
Success: Here’s an example of a successful response.
{
"status": 200,
"success": true,
"data": {
"id": 42,
"account_id": 15,
"reff_no": "EWT01JKABCDEF123456789",
"status": "open",
"status_computed": "open",
"is_expired": false,
"ewallet_vendor": "EWALLET_SHOPEEPAY",
"amount": 50000.0,
"total_amount": 50000.0,
"merchant_fee": 1000.0,
"net_amount": 49000.0,
"checkout_url": "https://wsa.wallet.airpay.co.id/universal-link/wallet/pay?deep_and_deferred=1&txn_token=abc123",
"checkout_url_app": "shopeeid://main?type=transfer&token=abc123",
"vendor_reference_no": "SP20260209ABC123",
"merchant_redirect_url": "https://yoursite.com/payment/callback",
"additional_info": {
"web_redirect_url": "https://wsa.wallet.airpay.co.id/universal-link/wallet/pay?deep_and_deferred=1&txn_token=abc123",
"app_redirect_url": "shopeeid://main?type=transfer&token=abc123",
"shopeepay_reference_no": "SP20260209ABC123",
"response_code": "2005400"
},
"customer_name": "John Doe",
"customer_email": "john@example.com",
"customer_phone": "081234567890",
"balance_after": null,
"has_recon": false,
"recon_at": null,
"recon_by": null,
"has_settle": false,
"settle_at": null,
"settle_by": null,
"has_settle_request": false,
"settle_request_at": null,
"settle_request_by": null,
"payment_channel": null,
"payment_vendor_code": "EWALLET_SHOPEEPAY",
"is_auto_settle": false,
"settlement_method": null,
"processed_timestamp": null,
"expired_at": "2026-02-09T13:30:00+00:00",
"created_at": "2026-02-09T13:00:00+00:00",
"updated_at": "2026-02-09T13:00:00+00:00",
"deleted_at": null,
"events_count": 1
}
}
Error: Here’s an example of a validation error response.
{
"status": 422,
"success": false,
"error": {
"message": "The given data was invalid.",
"errors": {
"amount": ["Max amount is Rp. 2.000.000,-."],
"ewallet_vendor": ["The selected ewallet vendor is invalid."]
}
}
}
checkout_url (web) or checkout_url_app (app deep link) so they can authorize and complete the payment.expired_at is not provided, the checkout expires in 30 minutes.EWALLET_SHOPEEPAY and EWALLET_DANA.net_amount is what you receive after fees.open. Use Inquiry Status to check for payment completion, or wait for a webhook notification.merchant_redirect_url, the customer will be redirected to your specified URL after completing or canceling the payment in the e-wallet app. If not provided, the customer is redirected to the default SingaPay payment status page.