SuwPay Payment OPEN API (1.0.0)

Download OpenAPI specification:

SuwPay Payment OPEN API

Introduction

The SuwPay Payment Open API provides comprehensive collection and disbursement services for merchants, supporting multiple payment channels and currencies. Through standardized interface specifications, merchants can efficiently integrate payment functionalities to achieve secure, fast fund transfers and management.

Integration Notes

  • All timestamps use standard UTC time format (e.g., 2025-03-05T09:21:53.661Z)
  • Indonesian channels only support integer amounts

Authentication And Signature

Authentication

The SuwPay Payment Open API uses OAuth 2.0 standard with Bearer Token authentication. Merchants must provide valid Bearer Tokens in request headers to access API endpoints.

After account creation, merchants can obtain Access Tokens from the SuwPay Dashboard. Securely store and regularly rotate tokens.

RSA Signature

RSA signature verification is disabled by default. Merchants enable it by uploading their public key via the SuwPay Dashboard. SHA256WithRSA signature algorithm is used for signature. Merchants generate their own public and private key pairs, upload the public key via the SuwPay Dashboard, and download SuwPay's public key. Ensure that the keys are stored securely. If a key is compromised, update it immediately.

Signature requires two parameters: RSA private key and raw request body string (without sorting). For empty bodies, use empty string "". Finally, perform Base64 encoding on the encrypted byte data.

Signature Example

import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

public class RSAUtil {

    // Generate a key pair
    public static KeyPair generateKeyPair() throws NoSuchAlgorithmException {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(2048); // Key size can be adjusted as needed
        return keyPairGenerator.generateKeyPair();
    }

    // Sign data using the private key
    public static String signData(String data, PrivateKey privateKey) throws Exception {
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(privateKey);
        signature.update(data.getBytes());
        byte[] signedData = signature.sign();
        return Base64.getEncoder().encodeToString(signedData);
    }

    // Verify signature using the public key
    public static boolean verifySignature(String data, String signedDataBase64, PublicKey publicKey) throws Exception {
        byte[] signedData = Base64.getDecoder().decode(signedDataBase64);
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initVerify(publicKey);
        signature.update(data.getBytes());
        return signature.verify(signedData);
    }

    // Get the public key as a string (for storage or transmission)
    public static String getPublicKeyString(PublicKey publicKey) {
        return Base64.getEncoder().encodeToString(publicKey.getEncoded());
    }

    // Restore the public key from a string
    public static PublicKey getPublicKeyFromString(String publicKeyString) throws GeneralSecurityException {
        byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyString);
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        return keyFactory.generatePublic(keySpec);
    }

    // Get the private key as a string (for storage or transmission; ensure security)
    public static String getPrivateKeyString(PrivateKey privateKey) {
        return Base64.getEncoder().encodeToString(privateKey.getEncoded());
    }

    // Restore the private key from a string
    public static PrivateKey getPrivateKeyFromString(String privateKeyString) throws GeneralSecurityException {
        byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyString);
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        return keyFactory.generatePrivate(keySpec);
    }

    // Main method (for testing only)
    public static void main(String[] args) {
        String privateKeyString = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8X9hru/AR0DeFOzyQeDTPpYOT4u5fJDQGu5G5K2YFUVK/471XSIk7zQzLexW2at1XQWn8cZgF4aDJiLt1FvQYNpiNWAlxSOLEa4MnAkvEeU30PKmcxMjCWdlC3Rk4VVpqLqBB6Ovfb+Z0Ea7u9XITfUaOb1A71klkdyppPMYV2uvXa9UAC5BtNMnstpe2ZU8Omw1bfjRZT6YpuJEbDt9Xy8S4bqhhrsSTQFYxLXjKNr2ZhtweDndKc8ZhwDhNE2Tw2pAH9A3tO1aV5blcHcj0xw2Lqt4QoSZWTlIxjGN5oQ0C+B9G7VsFgloLkjxIroGsRQazZzLTLT0oh9MsmRtXAgMBAAECggEACWkYXLl00s7+Fw/QhL8clEsGebragbJDTxrLut5qKFXZtnBgIx4ijPQ/cWLiwMwx5owECXJ7T7/n0mmcQ8szwonnsRf20Mv9WCau1KIOuu/8bvkg2A4UoXDvo6F8Aw5wh+FwbBqAvhbPAnlnrdRhMIwPnEn/Th30aKpzWfKJSsog9tbc/au9/gDGWPUfcDlPuH1IFSN0Z6KbeCEeSsCDXz68jhOdLjUtZE+4Hvp3ZbNL4YOToQY1lQWtw1VdJRzyjtZCZPaeviXiQTuIo52s5AV2ZhFdHa9HWD0IuXV12SBFlpi1u1hk1W5m4T3KMrErooOFCa7hynNXM6ofBMJzEQKBgQDx5Yx6tXsiQKukShWKkaWly8ozYqf2V42jkrAFy3XLqdYeNBso1Qb3l2u2C7xG1z/3QyNCBlp7m8YDd+0Jl4Ldp13P87LKvRes1MidIkHEzEIfTNyyXXXn3FZMbU5qEDMggL1gBlD2fS4UgxQ/HBgXJc9+BSdDmiLFfKh3DQY7iwKBgQDHW3HlvmMa/2/xHH5Nn+ub++VLASlRUC7sU24BE/PtEllwWDZ4DpUQ5OlkCleE0cGjFnh3zC6yZgSmN02X6wpghVF9/Vf2B+ZUSBbdbSDxGmrIH9wnFTDLGmOKB1DzbGQsFsVG/TMh7UGjPB/jzWY5cgn6HwI0PXzPowL2P6yI5QKBgBjlUCz86pxe3Yt+GHN3g/3pWHkraTAAWNKB8V3XT9tTMndPU5BDRIFM80f8MzdzReET5tgPwVZBdQK8YAgBsPVRGWWipj8ZcQtXpwINGYnAn/mKtpgg6Fahpbwd79kYq7pnpZXxcHm97nUr/HR2VsBjItTMgPsDLRr4NnpyO7b7AoGBAKfv+Lq473PGyt4qSpvJpAj64eWVTOEa0uxyO7Dcxhdn5cAmD3yDjD93FsUXkTJqINzqCQGiF5RhLHl5DPx1G4DDzip8SKURco59TAWr8JwqzNlZPXQO/dOan0+faiolnR0m8XkjwvdJjomcFKEqXnr1/kGd7ZVkVsfzYoNekFGhAoGAYS2R8jT2byKu/3rukAog0zYe++aqq3naSiSxpLPuM1S74GomjiSYCNTZkEXd+QXzaIMXjG+t4MbHca244AUUPl8sMA49M3h+48hHBw7bS+7kvXgWpQbgujnQg6C/RkqG49xV3cm6W+tC/aodScrU1RWkbRg7hvJhMuv1TfSipWo=";
        /* Note: The request body is unordered; do not sort it before signing or verifying. */
        String body = "{    \"merchantNo\": \"MCHID20250101000000A1A1\",    \"appId\": \"APP20250101000000P1P1\",    \"timestamp\": \"1740108488586\",    \"version\": \"1.0\",    \"data\": {        \"merchantRequestNo\": \"test00000001\",        \"currency\": \"IDR\",        \"country\": \"ID\",        \"amount\": 10000,        \"paymentMethodCode\": \"IDR_QRIS\",        \"paymentTargetOrg\": \"IDR_QRIS\",        \"subject\": \"Purchase of Goods\",        \"description\": \"Payment for electronic goods\",        \"language\": \"en\",        \"payerInfo\": {            \"email\": \"johndoe@example.com\", \"phoneNo\": \"+1234567890\"        }    }}";
        try {
            PrivateKey privateKey = getPrivateKeyFromString(privateKeyString);
            String signedData = signData(body, privateKey);
            System.out.println(signedData);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Callback Signature Verification

Callbacks don't include signatures by default. Uploading merchant public key via the SuwPay Dashboard enables callback signatures (marked as "Sign" in the header). Merchants can choose whether to verify the signature for payment callbacks. The signing process involves signing the request body string directly without sorting. Verification should also be performed on the request body string without converting it into an object first.

API Specifications

Request Format

Parameter Type Required Description
Content-Type string Y application/json
Authorization string Y Bearer Token for authentication
Sign string N SHA256withRSA signature using merchant private key
Example:
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cC...
Sign: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr...

Body

Parameter Type Required Description
merchantNo string Y MerchantNo
appId string Y AppId
timestamp string Y ISO 8601 timestamp
version string Y API version, currently 1.0
data string Y Business parameters, specific to each interface definition
Example:
{
  "merchantNo": "MCH12345",
  "appId": "APP67890",
  "timestamp": "2023-10-15T08:55:30Z",
  "version": "1.0",
  "data": {}
}

Response Format

Parameter Type Required Description
Content-Type string Y application/json
HTTP Status Code integer Y Standard HTTP codes(2xx, 4xx, 5xx)
Sign string N SHA256withRSA signature using platform private key

Body

Parameter Type Required Description
status string Y Request result status: success or error. Note: success only indicates that the request was successful, not that the payment was successful. Refer to the payment order status in data for the actual payment status.
code integer Y HTTP status code
message string Y Status description
data object N Business data
errors array N Error details
Success Example:
{
  "status": "success",
  "code": 201,
  "message": "Transaction successfully created",
  "data": {
      // Specific business data
  },
  "errors":[]
}

Error Example:

{
  "status": "error",
  "code": 422,
  "message": "Business rule errors",
  "errors": [
    {
      "code": "UNSUPPORTED_CURRENCY",
      "message": "Unsupported currency type",
    }
  ]
}

Callback Format

After a payment order is completed (the payment order status is final, indicating success or failure), SuwPay will send the relevant payment result to the merchant, The merchant is required to receive and process the notification, returning a response as per the documentation.

Parameter Type Required Description
Content-Type string Y application/json
Sign string Y SHA256withRSA signature using platform private key
Example:
Content-Type: application/json
Sign: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt...

Body

Parameter Type Required Description
data object Y Payment order data
errors array N Error details
Example:
{
  "data": {
      "suwpayOrderNo": "Test1645780876511",
      "merchantRequestNo": "Test1645780876511",
      "amount": "10000.00",
      "currency": "IDR",
      "status": "paid",
      "createdTime": "2023-10-15T08:55:30Z",
      "paymentMethodCode":"ID-VA",
      "paymentTargetOrg":"BRI",
      "paymentReceiveAccount":{
        "accountType":"va_number"
        "accountName":""
        "vaNumber":"8916900133279954",
        "qrString":"",
        "redirectUrl":""
      }    
      "paidTime":"2023-10-15T09:36:00Z"
    },
    "errors":[]
}

Callback Response and Retry

After SuwPay sends a callback notification to the merchant, the merchant should respond with a 200 status code promptly. If a non-200 HTTP response is received, SuwPay will automatically retry every 5 minutes until the merchant responds with a 200 HTTP status code. SuwPay will retry a maximum of 3 times for each callback notification.

Order Status Codes

Order Status Description
Pending Order processing in progress
Active Order available for payment
Paid Payment successful
Failed Payment failed
Canceled Order canceled
Closed Order closed

HTTP Response Status Codes

Category HTTP Status Code Description
2xx Success 200 Processing successful. Note: Success does not mean the payment was successful.
201 Creation successful. Note: Success does not mean the payment was successful.
4xx Client Errors 400 Invalid request parameter format or type
401 Authentication failed
403 Client does not have permission to perform the operation
404 Requested resource not found
422 Business rule error in the request
429 Request exceeds interface frequency limit
5xx Server Errors 500, 502, 503, etc. Internal server error. Generally, this does not occur and has a very low probability.

Business Error Codes

Authentication Errors

Error Code Corresponding HTTP Status Code Description
AUTH_FAILED 401 Access token verification failed
INVALID_TOKEN 401 Access token format is incorrect or does not meet requirements
EXPIRED_TOKEN 401 Access token has expired and needs to be reacquired
INVALID_SIGNATURE 400 RSA signature verification failed, possibly due to an incorrect signature
ACCESS_DENIED 403 No permission to request this operation

Parameter Errors

Error Code Corresponding HTTP Status Code Description
INVALID_PARAMETER 400 Invalid request parameter format or type
MISSING_PARAMETER 400 Required request parameter is missing
INVALID_PAYMENT_METHOD 400 Unsupported payment method type

Resource Errors

Error Code Corresponding HTTP Status Code Description
RESOURCE_NOT_FOUND 404 Requested resource not found
TRANSACTION_NOT_FOUND 404 Specified transaction record not found
MERCHANT_NOT_FOUND 404 MerchantNo not found, possibly due to an incorrect merchantNo or unregistered merchant
APP_NOT_FOUND 404 AppId not found, possibly due to an incorrect appId or unregistered application
PAYMENT_METHOD_NOT_FOUND 404 Payment method does not exist, incorrect paymentMethodCode
MERCHANT_PAYMENT_METHOD_NOT_FOUND 422 Merchant payment method does not exist, corresponding payment method not activated
FUND_ACCOUNT_NOT_FOUND 404 Fund account does not exist
ORDER_NOT_FOUND 404 Order not found, incorrect suwpayOrderNo
PAYMENT_TARGET_ORG_NOT_FOUND 404 Payment target org does not exist, incorrect paymentTargetOrg

Business Errors

Error Code Corresponding HTTP Status Code Description
AMOUNT_EXCEEDS_MAX 422 Transaction amount exceeds the allowed maximum limit
AMOUNT_BELOW_MIN 422 Transaction amount is below the allowed minimum limit
UNSUPPORTED_CURRENCY 422 Unsupported currency type
MERCHANT_AUTH_FAILED 422 Merchant authentication status is abnormal, operation cannot be performed
MERCHANT_ACTIVE_FAILED 422 Merchant is not activated or has been disabled, operation cannot be performed
APP_DISABLED 422 Merchant's application has been disabled
INSUFFICIENT_FUNDS 422 Insufficient balance in the fund account, transaction cannot be completed
INVALID_RECIPIENT 422 Incorrect recipient information, e.g., incorrect account format or incomplete bank information
PAYMENT_CHANNEL_UNAVAILABLE 422 Payment channel is unavailable due to maintenance or service interruption, please retry later
MERCHANT_INSUFFICIENT_BALANCE 422 Insufficient merchant balance
APP_MERCHANT_NOT_MATCH 422 Application and merchant do not match
CHANNEL_UNAVAILABLE 422 Payment channel is unavailable
DUPLICATE_REQUEST_NO 422 Duplicate merchant request number
PAYMENT_METHOD_DISABLED 422 Payment method has been disabled
MERCHANT_PAYMENT_METHOD_DISABLED 422 Merchant payment method has been disabled
FUND_ACCOUNT_LOCKED 422 Fund account has been locked
DUPLICATE_ORDER 422 Duplicate order
NO_AVAILABLE_CHANNELS 422 No available channels
PAYMENT_TARGET_ORG_DISABLED 422 Payment target org has been disabled
PAYMENT_TARGET_ORG_NOT_SUPPORTED 422 Unsupported payment target org
PAYMENT_METHOD_CURRENCY_NOT_MATCH 422 Payment method and currency do not match
PAYMENT_METHOD_NOT_SUPPORTED 422 Unsupported payment method
AMOUNT_NO_SUPPORT 422 Unsupported amount, e.g., IDR does not support decimals

Other Errors

Error Code Corresponding HTTP Status Code Description
RATE_LIMIT_EXCEEDED 429 Interface request rate limit exceeded, please retry later

Payment Target Orgs

Indonesia

Payment Type Payment Method Name Payment Method Code Payment Target Org Name Payment Target Org Code
Collection Virtual Accounts IDR_VA BRI
Collection Virtual Accounts IDR_VA BNI
Collection Virtual Accounts IDR_VA MANDIRI
Collection Virtual Accounts IDR_VA PERMATA
Collection Virtual Accounts IDR_VA BSI
Collection Virtual Accounts IDR_VA CIMB
Collection Virtual Accounts IDR_VA BCA
Collection Virtual Accounts IDR_VA BNC
Collection Virtual Accounts IDR_VA BTPN
Collection Virtual Accounts IDR_VA DANAMON
Collection Qris IDR_QRIS IDR_QRIS
Collection Ewallet IDR_EWALLET OVO
Collection Ewallet IDR_EWALLET DANA
Collection Ewallet IDR_EWALLET LINKAJA
Collection Ewallet IDR_EWALLET SHOPEEPAY
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Rakyat Indonesia Bank BRI
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Mandiri (Persero) Tbk Bank Mandiri
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Negara Indonesia Bank BNI
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Danamon Indonesia Tbk Bank Danamon
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Permata Tbk Bank Permata
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Permata Tbk Syariah Bank Permata Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Central Asia Tbk Bank BCA
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Internasional Indonesia Tbk BII Maybank
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Panin Tbk Bank Panin
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank CIMB Niaga Tbk CIMB Niaga
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank UOB Buana Tbk Bank UOB INDONESIA
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank OCBC NISP Tbk Bank OCBC NISP
Disbursement Bank Transfer IDR_BANK_TRANSFER Citibank N.A. CITIBANK
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank of America NA Bank of America NA
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Windu Kentjana International Tbk Bank Windu Kentjana International
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Artha Graha Internasional Tbk Bank ARTHA GRAHA
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank of Tokyo-Mitsubishi UFJ, Ltd. Bank TOKYO MITSUBISHI UFJ
Disbursement Bank Transfer IDR_BANK_TRANSFER DBS Bank Ltd. Bank DBS
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Resona Perdania Bank Resona Perdania
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Mizuho Indonesia Bank Mizuho Indonesia
Disbursement Bank Transfer IDR_BANK_TRANSFER Standard Chartered Bank Standard Chartered
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Capital Indonesia Tbk Bank CAPITAL
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank BNP Paribas Indonesia Bank BNP Paribas
Disbursement Bank Transfer IDR_BANK_TRANSFER PT ANZ Panin Bank ANZ Indonesia
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank of China Limited Bank OF CHINA
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Bumi Arta Tbk Bank Bumi Arta
Disbursement Bank Transfer IDR_BANK_TRANSFER HSBC Bank (Indonesia) Bank HSBC
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank ANTAR DAERAH Bank Antardaerah
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Rabobank International Indonesia Bank Rabobank
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank JTrust Indonesia Bank JTRUST INDONESIA
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Mayapada Internasional Tbk Bank MAYAPADA
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Jawa Barat dan Banten Tbk Bank Jawa Barat
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank DKI Bank DKI
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Pembangunan Daerah Istimewa Yogyakarta Bank BPD DIY
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Jateng Bank JATENG
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Jatim Bank Jatim
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Jambi Bank Jambi
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Jambi Syariah Bank Jambi Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Aceh Bank Aceh
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Aceh Syariah Bank Aceh Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sumut Bank SUMUT
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Nagari Bank NAGARI
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Riau Bank Riau
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Riau Syariah Bank Riau Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sumsel Babel Bank SUMSEL BABEL
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sumsel Babel Syariah Bank SUMSEL BABEL Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Lampung Bank Lampung
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Kalsel Bank KALSEL
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Kalbar Bank KALBAR
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Pembangunan Daerah Kalimantan Timur Bank BPD Kaltim
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Pembangunan Daerah Kalimantan Tengah Bank BPD Kalteng
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sulawesi Selatan dan Sulawesi Barat Bank SULSELBAR
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sulut Bank Sulut
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Nusa Tenggara Barat Bank NTB
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Nusa Tenggara Barat Syariah Bank NTB Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Pembangunan Daerah Bali Bank BPD Bali
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Nusa Tenggara Timur Bank NTT
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Maluku Bank Maluku
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Pembangunan Daerah Papua Bank BPD Papua
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Bengkulu Bank Bengkulu
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sulawesi Tengah Bank SULTENG
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sultra Bank Sultra
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Banten Bank BANTEN
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Nusantara Parahyangan Bank Nusantara Parahyangan
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank of India Indonesia Bank Of India Indonesia
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Muamalat Indonesia Bank Muamalat
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Mestika Bank Mestika
Disbursement Bank Transfer IDR_BANK_TRANSFER Shinhan Bank Bank SHINHAN
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Sinarmas Tbk Bank Sinarmas
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Maspion Indonesia Tbk Bank Maspion
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Ganesha Bank Ganesha
Disbursement Bank Transfer IDR_BANK_TRANSFER Industrial and Commercial Bank of China (ICBC) Bank ICBC
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank QNB Kesawan Tbk Bank QNB indonesia
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Tabungan Negara Bank BTN
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Woori Saudara 1906 Tbk Bank Woori Saudara
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Tabungan Pensiunan Nasional Tbk Bank BTPN
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Victoria Syariah Bank Victoria Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Jabar Banten Syariah Bank Jabar Banten Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Mega Tbk Bank Mega
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Bukopin Bank Bukopin
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Syariah Indonesia Bank Syariah Indonesia
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Jasa Jakarta Bank Jasa Jakarta
Disbursement Bank Transfer IDR_BANK_TRANSFER KEB Hana Bank Bank KEB HANA
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank MNC Internasional Tbk Bank MNC INTERNATIONAL
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Rakyat Indonesia (Agroniaga) Bank Rakyat Indonesia AGRONIAGA
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank SBI Indonesia (Indomonex) Bank SBI Indonesia (Indomonex)
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Royal Bank Royal
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Nationalnobu Bank National Nobu
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Mega Syariah Bank MEGA SYARIAH
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Ina Perdana Bank INA
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Panin Syariah Bank PANIN SYARIAH
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Prima Master PRIMA MASTER BANK
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Syariah Bukopin Bank SYARIAH BUKOPIN
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Sahabat Sampoerna Bank Sahabat Sampoerna
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Dinar Indonesia Bank DINAR
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Amar Indonesia Bank AMAR
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Seabank Indonesia Bank Seabank Indonesia
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Central Asia Syariah Bank BCA SYARIAH
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Tabungan Pensiunan Nasional Syariah Bank BTPN SYARIAH
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Multiarta Sentosa Bank MULTIARTA SENTOSA
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Mayora Indah Tbk Bank Mayora
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Index Selindo Bank INDEX
Disbursement Bank Transfer IDR_BANK_TRANSFER Central Nasional Bank CNB
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Mantap Sejahtera Bank MANTAP
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Victoria International Bank VICTORIA INTL
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Harda Internasional Tbk HARDA
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Pembangunan Daerah Kepulauan Selayar BPR KS
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank IFI IBK
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Aladin Syariah Bank Aladin Syariah
Disbursement Bank Transfer IDR_BANK_TRANSFER China Trust Commercial Bank, Indonesia Branch Bank CTBC Indonesia
Disbursement Bank Transfer IDR_BANK_TRANSFER Commonwealth Bank of Australia Bank COMMONWEALTH
Disbursement Bank Transfer IDR_BANK_TRANSFER Bank Neo Commerce Bank Neo Commerce
Disbursement Bank Transfer IDR_BANK_TRANSFER PT Bank Artos Indonesia Bank Jago
Disbursement Ewallet Transfer IDR_EWALLET_TRANSFER DANA DANA
Disbursement Ewallet Transfer IDR_EWALLET_TRANSFER GOPAY GOPAY
Disbursement Ewallet Transfer IDR_EWALLET_TRANSFER LINKAJA LINKAJA
Disbursement Ewallet Transfer IDR_EWALLET_TRANSFER OVO OVO
Disbursement Ewallet Transfer IDR_EWALLET_TRANSFER SHOPEEPAY SHOPEEPAY

Example

Collection(VA)

{
    "merchantNo": "MCHID20250101000000A1A1",
    "appId": "APP20250101000000P1P1",
    "timestamp": "2025-03-05T09:47:33.857Z",
    "version": "1.0",
    "data": {
        "merchantRequestNo": "test00000001",
        "currency": "IDR",
        "country": "ID",
        "amount": 10000,
        "paymentMethodCode": "IDR_VA",
        "paymentTargetOrg": "BRI",
        "subject": "Purchase of Goods",
        "description": "Payment for electronic goods",
        "language": "en",
        "payerInfo": {
            "email": "johndoe@example.com", "phoneNo": "+1234567890"
        }
    }
}

Collection(QRIS)

{
    "merchantNo": "MCHID20250101000000A1A1",
    "appId": "APP20250101000000P1P1",
    "timestamp": "2025-03-05T09:47:33.857Z",
    "version": "1.0",
    "data": {
        "merchantRequestNo": "test00000001",
        "currency": "IDR",
        "country": "ID",
        "amount": 10000,
        "paymentMethodCode": "IDR_QRIS",
        "paymentTargetOrg": "IDR_QRIS",
        "subject": "Purchase of Goods",
        "description": "Payment for electronic goods",
        "language": "en",
        "payerInfo": {
            "email": "johndoe@example.com", "phoneNo": "+1234567890"
        }
    }
}

Collection(EWALLET)

{
    "merchantNo": "MCHID20250101000000A1A1",
    "appId": "APP20250101000000P1P1",
    "timestamp": "2025-03-05T09:47:33.857Z",
    "version": "1.0",
    "data": {
        "merchantRequestNo": "test00000001",
        "currency": "IDR",
        "country": "ID",
        "amount": 10000,
        "paymentMethodCode": "IDR_EWALLET",
        "paymentTargetOrg": "DANA",
        "subject": "Purchase of Goods",
        "description": "Payment for electronic goods",
        "language": "en",
        "payerInfo": {
            "email": "johndoe@example.com", "phoneNo": "+1234567890"
        }
    }
}

Disbursement(BANK)

{
  "merchantNo": "MCHID20250101000000A1A1",
  "appId": "APP20250101000000P1P1",
  "timestamp": "2025-03-05T09:47:33.857Z",
  "version": "1.0",
  "data": {
    "merchantRequestNo": "test00000001",
    "currency": "IDR",
    "country": "ID",
    "amount": 10000,
    "paymentMethodCode": "IDR_BANK_TRANSFER",
    "paymentTargetOrg": "Bank BRI",
    "recipientInfo": {
      "name": "123456789",
      "accountNo": "123456789"
    }
  }
}

Disbursement(EWALLET)

{
  "merchantNo": "MCHID20250101000000A1A1",
  "appId": "APP20250101000000P1P1",
  "timestamp": "2025-03-05T09:47:33.857Z",
  "version": "1.0",
  "data": {
    "merchantRequestNo": "test00000001",
    "currency": "IDR",
    "country": "ID",
    "amount": 10000,
    "paymentMethodCode": "IDR_EWALLET_TRANSFER",
    "paymentTargetOrg": "DANA",
    "recipientInfo": {
      "name": "123456789",
      "accountNo": "123456789"
    }
  }
}

Collections

Query available methods

Query the merchant's currently available collection methods.

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

MerchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (PayAvailableMethodQueryDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}

Create collection (cashier)

Create a collection cashier order

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

MerchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (PayinCashierOrderCreateDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}

Create collection

Create a collection order

View use cases

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

MerchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (PayinOrderCreateDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}

Collection callback

The platform will send callback notifications to the merchant regarding the processing results of collection orders. The merchant must develop and implement the interface functionality and provide it to the platform.

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
object (PayinOrderVo)
Array of objects (ApiError)

Request samples

Content type
application/json
{
  • "data": {
    },
  • "errors": [
    ]
}

Query collection

Query the status and details of a specified collection order.

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

MerchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (PayOrderQueryDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}

Disbursements

Query available methods

Query the merchant's currently available disbursement methods.

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

MerchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (PayAvailableMethodQueryDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}

Create disbursement

Create a new disbursement order

View use cases

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

merchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (PayoutOrderCreateDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}

Disbursement callback

The platform will send callback notifications to the merchant regarding the processing results of disbursement orders. The merchant must develop and implement the interface functionality and provide it to the platform.

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
object (PayoutOrderVo)
Array of objects (ApiError)

Request samples

Content type
application/json
{
  • "data": {
    },
  • "errors": [
    ]
}

Query disbursement

Query the status and details of a specified disbursement order.

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

MerchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (PayOrderQueryDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}

Balances

Query Balance

Query the merchant's account balance.

Authorizations:
AuthorizationSign
Request Body schema: application/json
required
merchantNo
required
string

MerchantNo

appId
required
string

AppId

timestamp
required
string

ISO 8601 timestamp

version
required
string

API version, currently 1.0

object (BalanceQueryDto)

Responses

Request samples

Content type
application/json
{
  • "merchantNo": "string",
  • "appId": "string",
  • "timestamp": "string",
  • "version": "string",
  • "data": {
    }
}