Payment instructions
GET /v1/partners/payment-instructions?lang=enUse this catalogue to populate your payment channel selector and display how-to-pay steps in your app.
| Property | Value |
|---|---|
| Permission | read-gateway |
| Authentication | Bearer partner API key; no HMAC signature |
| Idempotency | Not applicable — this request reads reference content |
| Language | lang=id (default) or lang=en |
| Responses | 200, 400 for unsupported language, 401 for invalid credentials, 403 for missing permission |
Request
Section titled “Request”GET /v1/partners/payment-instructions?lang=enAuthorization: Bearer <partner-api-key>Omit lang for Indonesian. An empty value, unsupported value such as fr, or repeated lang parameter returns HTTP 400 with REQUEST_INVALID_PAYLOAD. Unknown query fields use the existing validation contract: HTTP 422 with the same error code.
Response
Section titled “Response”This excerpt shows BRI and DANA; the actual response includes all published channels.
{ "data": { "lang": "en", "channels": [ { "method": "virtual_account", "channel": "BRI", "name": "BRI", "instructions": [ { "id": "bank_transfer", "title": "Bank transfer", "steps": [ "Copy the Virtual Account number from the payment page and check its expiry time.", "Open the Virtual Account payment service through your banking app, internet banking, or ATM.", "Enter the Virtual Account number and follow the bank instructions.", "Review the payment details and ensure the amount exactly matches the bill.", "Confirm payment as instructed by the bank and keep the payment receipt." ] } ] }, { "method": "ewallet", "channel": "EWALLET_DANA", "name": "DANA", "instructions": [ { "id": "checkout", "title": "Pay with DANA", "steps": [ "Open the payment link from the payment page before it expires.", "Follow the checkout instructions to open DANA.", "Review the payment details and amount in DANA.", "Approve payment using the authentication method requested by DANA.", "Return to the payment page and check the payment status." ] } ] } ] }, "request_id": "req_example"}Each channel contains method, channel, name, and instructions. Each group has a stable id, translated title, and ordered array of steps. Render steps in array order. Channel codes and group IDs stay the same across languages; brand names can also stay the same.
Initial channel coverage
Section titled “Initial channel coverage”| Method | Exact channel codes | Instruction group |
|---|---|---|
virtual_account | BCA, BNI, BRI, MANDIRI, PERMATA, MAYBANK, CIMB, BSI, MUAMALAT, BNC, OCBC, DANAMON | bank_transfer |
ewallet | EWALLET_DANA | checkout |
Bank steps provide general VA payment guidance, not exact menu paths for each banking app or ATM. This is a curated initial list, not an account-specific availability check. Provider account activation and channel configuration still determine whether payment creation succeeds.
Connect instructions to a payment
Section titled “Connect instructions to a payment”- Use the exact
methodandchannelfrom the catalogue in Create a payment. For example, submitBRI, notVA_BRI. - Match the created payment’s
methodandchannelto the catalogue entry. - Display its steps alongside that payment’s actual
payment_code, amount, andexpires_at. The catalogue contains no transaction-specific VA number or checkout URL. - Confirm payment through the payment status endpoint or webhook. A checkout redirect alone does not prove payment success.