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

Information

MethodPathFormatAuthentication
POST/api/v2.0/ewallet-native/create-orderjsonOAuth 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
account_idStringRequiredYour Account ID01K5G4FZZ18DMK0M5QTR8Y9QY9
amountNumericRequiredPayment amount in IDR. Min/max limits are based on your merchant agreement.50000
customer_emailStringOptionalCustomer email address (max 255 characters).john@example.com
customer_nameStringOptionalCustomer name for reference (max 255 characters).John Doe
customer_phoneStringOptionalCustomer phone number (max 20 characters).081234567890
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
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

{
    "account_id": "01K5G4FZZ18DMK0M5QTR8Y9QY9",
    "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/create-order" \
  -H "X-PARTNER-ID: b3ed7d4b-a96c-6c08-b3c7-12c3124242d9" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." \
  -d '{
    "account_id": "01K5G4FZZ18DMK0M5QTR8Y9QY9",
    "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

{
    "account_id": "01K5G4FZZ18DMK0M5QTR8Y9QY9",
    "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
response_codeStringMandatoryResponse code (see Response Code appendix)SP117
response_messageStringMandatoryResponse description (see Response Code appendix).“Beneficiary Account Not Found”
dataObjectConditionalTransaction data (present on success)-
> idIntegerMandatoryUnique transaction ID42
> account_idStringMandatoryAccount ID01K5G4FZZ18DMK0M5QTR8Y9QY9
> 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://…
> 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
> processed_timestampString/NullOptionalTransaction processed time (ISO 8601)2026-02-09T13:30:00+00:00
> 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.

{
    "response_code": "SP117",
    "response_message": "Beneficiary Account Not Found",
    "data": {
        "id": 42,
        "account_id": "01K5G4FZZ18DMK0M5QTR8Y9QY9",
        "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",
        "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,
        "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.

{
  "response_code": "SP117",
  "response_message": "Beneficiary Account Not Found",
  "data": {
    "ewallet_code": "EWALLET_SHOPEEPAY",
    "customer_number": "081234567890"
  }
}

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.