Download OpenAPI specification:
SuwPay Payment OPEN API
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.
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 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.
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();
}
}
}
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.
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...
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": {}
}
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 |
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",
}
]
}
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...
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":[]
}
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 | Description |
---|---|
Pending | Order processing in progress |
Active | Order available for payment |
Paid | Payment successful |
Failed | Payment failed |
Canceled | Order canceled |
Closed | Order closed |
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. |
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 |
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 |
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 |
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 |
Error Code | Corresponding HTTP Status Code | Description |
---|---|---|
RATE_LIMIT_EXCEEDED | 429 | Interface request rate limit exceeded, please retry later |
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 |
{
"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"
}
}
}
{
"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"
}
}
}
{
"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"
}
}
}
{
"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"
}
}
}
{
"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"
}
}
}
Query the merchant's currently available collection methods.
merchantNo required | string MerchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (PayAvailableMethodQueryDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "currency": "string"
}
}
Create a collection cashier order
merchantNo required | string MerchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (PayinCashierOrderCreateDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "merchantRequestNo": "string",
- "currency": "string",
- "country": "string",
- "amount": 0,
- "paymentMethodCode": "string",
- "paymentTargetOrgList": [
- "string"
], - "subject": "string",
- "description": "string",
- "language": "string",
- "payerInfo": {
- "firstName": "string",
- "middleName": "string",
- "lastName": "string",
- "phoneNo": "string",
- "idNo": "string",
- "email": "string",
- "address": "string",
- "city": "string",
- "region": "string",
- "zipCode": "string"
}, - "cardInfo": {
- "cardOrg": "string",
- "cardIdentifierNo": "string",
- "cardHolderFullName": "string",
- "cardExpirationMonth": "string",
- "cardExpirationYear": "string",
- "cvv": "string"
}, - "goodsInfo": {
- "goodsId": "string",
- "goodsName": "string",
- "quantity": "string",
- "goodsCurrency": "string",
- "goodsPrice": "string",
- "showUrl": "string",
- "goodsCategory": "string"
}, - "terminalInfo": {
- "clientIp": "string",
- "userAgent": "string",
- "deviceId": "string",
- "deviceLanguage": "string",
- "screenHeight": "string",
- "screenWidth": "string",
- "terminalType": "string",
- "osType": "string"
}, - "frontReturnUrl": "string",
- "callbackNotifyUrl": "string"
}
}
Create a collection order
View use cases
merchantNo required | string MerchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (PayinOrderCreateDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "merchantRequestNo": "string",
- "currency": "string",
- "country": "string",
- "amount": 0,
- "paymentMethodCode": "string",
- "paymentTargetOrg": "string",
- "subject": "string",
- "description": "string",
- "language": "string",
- "payerInfo": {
- "firstName": "string",
- "middleName": "string",
- "lastName": "string",
- "phoneNo": "string",
- "idNo": "string",
- "email": "string",
- "address": "string",
- "city": "string",
- "region": "string",
- "zipCode": "string"
}, - "cardInfo": {
- "cardOrg": "string",
- "cardIdentifierNo": "string",
- "cardHolderFullName": "string",
- "cardExpirationMonth": "string",
- "cardExpirationYear": "string",
- "cvv": "string"
}, - "goodsInfo": {
- "goodsId": "string",
- "goodsName": "string",
- "quantity": "string",
- "goodsCurrency": "string",
- "goodsPrice": "string",
- "showUrl": "string",
- "goodsCategory": "string"
}, - "terminalInfo": {
- "clientIp": "string",
- "userAgent": "string",
- "deviceId": "string",
- "deviceLanguage": "string",
- "screenHeight": "string",
- "screenWidth": "string",
- "terminalType": "string",
- "osType": "string"
}, - "frontReturnUrl": "string",
- "callbackNotifyUrl": "string"
}
}
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.
object (PayinOrderVo) | |
Array of objects (ApiError) |
{- "data": {
- "suwpayOrderNo": "string",
- "merchantRequestNo": "string",
- "amount": 0,
- "currency": "string",
- "status": "PENDING",
- "createdTime": "2019-08-24T14:15:22Z",
- "paymentMethodCode": "string",
- "paymentTargetOrg": "string",
- "paymentReceiveAccount": {
- "accountType": "string",
- "accountName": "string",
- "vaNumber": "string",
- "qrString": "string",
- "redirectUrl": "string"
}, - "paidTime": "2019-08-24T14:15:22Z",
- "updateTime": "2019-08-24T14:15:22Z"
}, - "errors": [
- {
- "code": "string",
- "message": "string"
}
]
}
Query the status and details of a specified collection order.
merchantNo required | string MerchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (PayOrderQueryDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "suwpayOrderNo": "string",
- "merchantRequestNo": "string"
}
}
Query the merchant's currently available disbursement methods.
merchantNo required | string MerchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (PayAvailableMethodQueryDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "currency": "string"
}
}
Create a new disbursement order
View use cases
merchantNo required | string merchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (PayoutOrderCreateDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "merchantRequestNo": "string",
- "currency": "string",
- "country": "string",
- "amount": 0,
- "paymentMethodCode": "string",
- "paymentTargetOrg": "string",
- "recipientInfo": {
- "name": "string",
- "accountNo": "string",
- "phoneNo": "string",
- "idNo": "string",
- "email": "string"
}, - "callbackNotifyUrl": "string"
}
}
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.
object (PayoutOrderVo) | |
Array of objects (ApiError) |
{- "data": {
- "suwpayOrderNo": "string",
- "merchantRequestNo": "string",
- "amount": 0,
- "currency": "string",
- "status": "PENDING",
- "createdTime": "2019-08-24T14:15:22Z",
- "paymentMethodCode": "string",
- "paymentTargetOrg": "string",
- "recipientInfo": {
- "name": "string",
- "accountNo": "string",
- "phoneNo": "string",
- "idNo": "string",
- "email": "string"
}, - "paidTime": "2019-08-24T14:15:22Z",
- "updateTime": "2019-08-24T14:15:22Z"
}, - "errors": [
- {
- "code": "string",
- "message": "string"
}
]
}
Query the status and details of a specified disbursement order.
merchantNo required | string MerchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (PayOrderQueryDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "suwpayOrderNo": "string",
- "merchantRequestNo": "string"
}
}
Query the merchant's account balance.
merchantNo required | string MerchantNo |
appId required | string AppId |
timestamp required | string ISO 8601 timestamp |
version required | string API version, currently 1.0 |
object (BalanceQueryDto) |
{- "merchantNo": "string",
- "appId": "string",
- "timestamp": "string",
- "version": "string",
- "data": {
- "currency": "string",
- "fundAccountNo": "string"
}
}