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.