Skip to content

Integration guide ​

This guide applies to the Indonesia Sandbox. Never send a Production private key, Client Secret, token, or credential through the documentation tool.

Environments ​

Use the Sandbox origin supplied during onboarding. Production origins are blocked by Try It. IDR amounts use integer minor units.

Unipay authentication and signatures ​

Unipay uses RSA SHA-256. JSON is flattened with dot notation and array indexes, fields are ASCII-sorted, empty values and sign are omitted, and pairs are joined as key=value&.... reqTime uses the Asia/Shanghai wall clock defined by the platform contract.

SNAP authentication and signatures ​

SNAP token calls sign clientId|timestamp with RSA SHA-256. Business requests sign METHOD:PATH:TOKEN:sha256(rawBody):timestamp with HMAC SHA-512. Use /api/v1.0/** as the canonical path; /snap/v1.0/** is documented only as a compatibility alias.

Idempotency ​

Use unique reqId, business numbers, and X-EXTERNAL-ID values. Retries must keep the same payload. If the network result is unknown, query before creating a replacement transaction.

Callbacks ​

Verify the signature before processing an event. Callbacks can be delivered more than once and must be idempotent. A processing or unknown state is never success.

Errors ​

Distinguish validation failures, configuration/routing failures, upstream rejection, and unknown network results. Retain the platform transaction number for investigation without logging credentials or sensitive payloads.

Payment and query ​

Create a payment with /unipay/pay, then use /unipay/query/pay-order or controlled synchronization to read the result. Payment instructions may be a VA, identifier, QR payload, or safe link depending on capability.

Use the signed /unipay/ping request to check merchant signature verification and application selection before sending a payment. It creates no payment order and returns the server-side signing string for troubleshooting; handle that response as diagnostic data.

Account inquiry and transfer ​

Call /unipay/account-inquiry before transfer when the capability requires it. bizTransferNo binds inquiry and transfer; upstream inquiry references are not returned to merchants. Transfers require a valid route, Profile, grant, and healthy platform account.

The current SNAP contract also publishes interbank bulk transfer, its item-level notification, and customer OTC cash-out creation/status. Use the operation-specific token mode and request schema shown in the API reference; availability still depends on the merchant's approved route and product capability.

SNAP accounts and virtual accounts ​

/api/v1.0/otp requests a provider-issued OTP for an authorized customer account journey. The virtual account update-va and update-status operations update an existing account and synchronize its paid status. The four QR-MPM cancel/query/refund/status routes from earlier snapshots are not in the current published contract; use only operations listed in this version of the API reference.

Balance and ledger entries ​

/unipay/query/balance reads merchant balances. /unipay/query/entries reads immutable ledger entries. Use these for reporting; do not derive balances from order lists.

Capability restrictions ​

Refund and allocation operations marked Sandbox-only must not be tried against Production. Actual availability always follows the merchant application's capability, fee, route, and environment.