Singapay Home Page
Logo Icon
  1. E-Wallet (Money In)
  2. Create Checkout

Information

MethodPathFormatAuthentication
POST/api/v1.0/ewallet-native/{account_id}/create-checkoutjsonOAuth 2.0 with Access Token

Request Details

Headers Structure

FieldValueTypeMandatoryLengthDescriptionExample
X-PARTNER-IDapi_keyAlphanumericMandatoryAPI key obtained from the merchant dashboard.b3ed7d4b-a96c-6c08-b3c7-12c3124242d9
Acceptapplication/jsonAlphabeticMandatorySpecifies JSON as the expected response format.application/json
Content-Typeapplication/jsonAlphabeticMandatorySpecifies JSON as the request body format.application/json
AuthorizationBearer {bearerToken}AlphanumericMandatoryBearer token obtained from the get access token endpoint.Bearer eyJ0eXAiOiJKV1{…}

Body Structure

ParameterTypeMandatoryDescriptionExample
amountNumericRequiredPayment amount in IDR. Min/max limits are based on your merchant agreement.50000
ewallet_vendorStringRequiredE-wallet vendor code. Accepted values: EWALLET_SHOPEEPAY, EWALLET_DANAEWALLET_SHOPEEPAY
expired_atStringOptionalExpiration 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_nameStringOptionalCustomer name for reference (max 255 characters).John Doe
customer_emailStringOptionalCustomer email address (max 255 characters).john@example.com
customer_phoneStringOptionalCustomer phone number (max 20 characters).081234567890
merchant_redirect_urlStringOptionalCustom 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

Request Example

{
    "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"
  }'

Request Example with Custom Expiration

{
    "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"
}

Response Details

Response Structure

FieldTypeMandatoryDescriptionExample
statusNumericMandatoryHTTP Status Code200
successBooleanMandatory2xx is true. 4xx–5xx is false.true
dataObjectConditionalTransaction data (present on success)-
> idIntegerMandatoryUnique transaction ID42
> account_idIntegerMandatoryAccount ID15
> reff_noStringMandatoryUnique reference number for this transactionEWT01JKABCDEF123456789
> statusStringMandatoryTransaction statusopen
> status_computedStringMandatoryComputed status (auto-detects expiration)open
> is_expiredBooleanMandatoryWhether the checkout URL has expiredfalse
> ewallet_vendorStringMandatoryE-wallet vendor codeEWALLET_SHOPEEPAY
> amountDecimalMandatoryPayment amount50000.00
> total_amountDecimalMandatoryTotal transaction amount50000.00
> merchant_feeDecimal/NullOptionalTotal fee charged to the merchant1000.00
> net_amountDecimal/NullOptionalNet amount after fees49000.00
> checkout_urlString/NullOptionalWeb redirect URL for paymenthttps://wsa.wallet.airpay.co.id/
> checkout_url_appString/NullOptionalDeep link URL to open the e-wallet app directlyshopeeid://…
> vendor_reference_noString/NullOptionalReference number from the e-wallet vendorSP202602091234567
> merchant_redirect_urlString/NullOptionalCustom redirect URL provided at checkout creationhttps://yoursite.com/payment/callback
> additional_infoObject/NullOptionalAdditional vendor-specific data-
> customer_nameString/NullOptionalCustomer nameJohn Doe
> customer_emailString/NullOptionalCustomer emailjohn@example.com
> customer_phoneString/NullOptionalCustomer phone081234567890
> balance_afterDecimal/NullOptionalAccount balance after settlement1500000.0
> has_reconBooleanMandatoryWhether transaction has been reconciledtrue
> recon_atString/NullOptionalReconciliation timestamp (ISO 8601)2026-02-09T14:00:00+00:00
> recon_byString/NullOptionalReconciled bysystem
> has_settleBooleanMandatoryWhether transaction has been settledtrue
> settle_atString/NullOptionalSettlement timestamp (ISO 8601)2026-02-09T15:00:00+00:00
> settle_byString/NullOptionalSettled bysystem
> has_settle_requestBooleanMandatoryWhether settlement has been requestedfalse
> payment_channelString/NullOptionalPayment channel usedSHOPEEPAY
> payment_vendor_codeString/NullOptionalVendor payment codeEWALLET_SHOPEEPAY
> is_auto_settleBooleanMandatoryWhether auto-settlement is enabledfalse
> settlement_methodString/NullOptionalSettlement methodnull
> expired_atString/NullOptionalCheckout expiration time (ISO 8601)2026-02-09T13:30:00+00:00
> created_atStringMandatoryTransaction creation time (ISO 8601)2026-02-09T13:00:00+00:00
> updated_atStringMandatoryLast update time (ISO 8601)2026-02-09T13:00:00+00:00
> events_countIntegerMandatoryNumber of events logged for this transaction1

Response Example

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."]
        }
    }
}

Important Notes

  • Checkout URL: After creating a checkout, redirect the customer to the checkout_url (web) or checkout_url_app (app deep link) so they can authorize and complete the payment.
  • Default Expiration: If expired_at is not provided, the checkout expires in 30 minutes.
  • Amount Limits: The min/max amount depends on your merchant agreement. If exceeded, a validation error (422) is returned.
  • Supported Vendors: Currently supports EWALLET_SHOPEEPAY and EWALLET_DANA.
  • Fees: Fees (merchant_fee) are calculated and returned in the response. The net_amount is what you receive after fees.
  • Status After Creation: The initial status is always open. Use Inquiry Status to check for payment completion, or wait for a webhook notification.
  • One-Time Checkout: Each checkout URL is for a single payment. After the customer pays (or the link expires), you must create a new checkout for the next payment.
  • Merchant Redirect URL: If you provide 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.