Skip to content
PGSwift Docs
Documentation/E-Wallet

E-Wallet

Merchants can use this API to create a checkout interface for processing e-wallet transactions.

POST /api/create/ewallet

Request

NameTypeRequiredValidationDescription
merchant_transaction_idstringtrueMerchant-provided unique transaction identifier.
amountstringtrueNumeric, 1-12 digitsTransaction amount expressed as a numeric value.
currencystringtrueAllowed value: "IDR"Transaction currency (only Indonesian Rupiah is supported).
ewallet_codestringtrueAllowed value: DANA, OVO, LINKAJA, SPAY, GOPAYE-wallet provider code used for the transaction
phone_numberstringtrueValid Indonesian phone number (must start with 08 or 628, e.g., 081234567890 or 6281234567890)Customer's phone number registered with the e-wallet
customer_namestringtrueBetween 5 - 25 characters. Allowed chars: a-z, A-Z, 0-9, - (dash), (space)Customer name linked to the transaction.
product_namestringtrueBetween 5 - 25 characters. Allowed chars: a-z, A-Z, 0-9, - (dash), (space)Product name linked to the transaction.
descriptionstringfalseOptional transaction information.
success_redirect_urlstringfalseURL to redirect the customer upon successful payment. Also supports mobile deep link URLs.
{
    "merchant_transaction_id": "ICZ10000001",
    "amount": "100000",
    "currency": "IDR",
    "ewallet_code": "DANA",
    "phone_number": "081234567890",
    "description": "Lorem Ipsum",
    "customer_name": "John Doe",
    "product_name": "Product Test",
    "success_redirect_url": "https://example.com/success"
}

Response

Name Description
status Request status indicator. true indicates success, false indicates failure.
message Result message for the request. Usually "success" when the request succeeds.
data.transaction_id System-generated unique transaction identifier.
data.redirect_url Redirect URL for users to complete the e-wallet payment. This URL directs users to the payment page.
data.expired_at Payment expiry datetime, server time (UTC+7), no offset, format YYYY-MM-DD HH:MM:SS (e.g. "2025-02-26 19:00:00"). null if not applicable.
data.expired_at_iso Same expiry as expired_at, as ISO 8601 with offset (e.g. "2025-02-26T19:00:00+07:00"). Same format on every channel. null when expired_at is null.
data.payment_channel Normalized payment channel, one format for every payment type and provider: a value such as QRIS, VA_BRI, BANK_BCA, or EWALLET_DANA (payment type prefix + code from the Appendix). null when the channel cannot be determined. Prefer this over channel.
data.success_redirect_url URL to redirect the customer upon successful payment. Also supports mobile deep link URLs.
{
    "status": true,
    "message": "success",
    "data": {
        "transaction_id": "9e536777-2bfa-4161-9931-35f5c4b23faf",
        "payment_channel": "EWALLET_DANA",
        "redirect_url": "{host}/checkout/9e536777-2bfa-4161-9931-35f5c4b23faf/ewallet/DANA",
        "success_redirect_url": "https://example.com/success",
        "expired_at": "2025-02-26 19:00:00",
        "expired_at_iso": "2025-02-26T19:00:00+07:00"
    }
}

Webhook