Introduction
KIRIMDOKU API supports two methods of transfer processing – namely, Bank Transfer and DOKU Wallet Transfer. See below for features of each service:
-
Bank Transfer: Bank transfer service where transfer destination goes to the beneficiary bank account. With this service, a partner is required to validate the bank account through inquiry.
-
DOKU Wallet Transfer: Wallet transfer service where transfer destination goes to the beneficiary DOKU wallet. With this service, a partner is required to validate the wallet account through inquiry.
Getting Started
To integrate, a merchant should have AGENTKEY. Please prepare a minimum of 3 email credentials to be registered on the KIRIMDOKU system. The main function of these 3 email addresses are:
- Main Agent: To supervise all transactions
- Supervisor: To supervise all transactions and operator's accounts, and perform batch upload transfer.
- Operator: To perform all transactions and see insight reports from a transaction.
Process Flow
Below is the process flow between KIRIMDOKU and partners that can be used to perform a certain action.
KIRIMDOKU URL
KIRIMDOKU has 2 separate environments for sandbox/staging and production, which are differentiate using different URL and key credentials. You can integrate and test with our staging environment before going live.
Below are the URLs of KIRIMDOKU API:
Staging/sandbox URL https://staging.doku.com/apikirimdoku
Production URL https://kirimdoku.com/v2/api
Shared Key Hash Value
Sample Encryption Method in JAVA
private static final String ALGORITHM = "AES";
public static String encrypt(String valueToEnc, String encKey) throws Exception {
Key key = new SecretKeySpec(encKey.getBytes(), ALGORITHM);
Cipher c = Cipher.getInstance(ALGORITHM);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encValue = c.doFinal(valueToEnc.getBytes());
return new String(Base64.encodeBase64(encValue));
} public static void main(String[] args) throws Exception {
String concatenatedString = "A41418" + "e8a32355-e202-4bc7-8ae7-ad4e7316bbcb";
String encryptionKey = "627054fevj1sutvs";
String signature = encrypt(concatenatedString, encryptionKey);
System.out.println(signature);
}
Sample Encryption Method in PHP
<?php $agentKey = "A41418"; $requestId = "e8a32355-e202-4bc7-8ae7-ad4e7316bbcb"; $plaintext = $agentKey . $requestId; $key ="627054fevj1sutvs"; $cipher = "aes-128-ecb"; if (in_array($cipher, openssl_get_cipher_methods())) { $ciphertext = openssl_encrypt($plaintext, $cipher, $key); echo $ciphertext; echo "<br/> "; $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key); echo $original_plaintext; } ?>
Sample Encryption Method in GOLANG
package mainimport ( "bytes" "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" )func main() { src := "A41418e8a32355-e202-4bc7-8ae7-ad4e7316bbcb" key := "627054fevj1sutvs" crypted := AesEncrypt(src, key) AesDecrypt(crypted, []byte(key))}func AesDecrypt(crypted, key []byte) []byte { block, err := aes.NewCipher(key) if err != nil { fmt.Println("err is:", err) } blockMode := NewECBDecrypter(block) origData := make([]byte, len(crypted)) blockMode.CryptBlocks(origData, crypted) origData = PKCS5UnPadding(origData) plain := string(origData) fmt.Println("plain:", plain) return origData}func AesEncrypt(src, key string) []byte { block, err := aes.NewCipher([]byte(key)) if err != nil { fmt.Println("key error1", err) } if src == "" { fmt.Println("plain content empty") } ecb := NewECBEncrypter(block) content := []byte(src) content = PKCS5Padding(content, block.BlockSize()) crypted := make([]byte, len(content)) ecb.CryptBlocks(crypted, content) fmt.Println("encrypted:", base64.StdEncoding.EncodeToString(crypted)) return crypted}func PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ciphertext)%blockSize padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(ciphertext, padtext...)}func PKCS5UnPadding(origData []byte) []byte { length := len(origData) unpadding := int(origData[length-1]) return origData[:(length - unpadding)]}type ecb struct { b cipher.Block blockSize int}func newECB(b cipher.Block) *ecb { return &ecb{ b: b, blockSize: b.BlockSize(), }}type ecbEncrypter ecbfunc NewECBEncrypter(b cipher.Block) cipher.BlockMode { return (*ecbEncrypter)(newECB(b))}func (x *ecbEncrypter) BlockSize() int { return x.blockSize }func (x *ecbEncrypter) CryptBlocks(dst, src []byte) { if len(src)%x.blockSize != 0 { panic("crypto/cipher: input not full blocks") } if len(dst) < len(src) { panic("crypto/cipher: output smaller than input") } for len(src) > 0 { x.b.Encrypt(dst, src[:x.blockSize]) src = src[x.blockSize:] dst = dst[x.blockSize:] }}type ecbDecrypter ecbfunc NewECBDecrypter(b cipher.Block) cipher.BlockMode { return (*ecbDecrypter)(newECB(b))}func (x *ecbDecrypter) BlockSize() int { return x.blockSize }func (x *ecbDecrypter) CryptBlocks(dst, src []byte) { if len(src)%x.blockSize != 0 { panic("crypto/cipher: input not full blocks") } if len(dst) < len(src) { panic("crypto/cipher: output smaller than input") } for len(src) > 0 { x.b.Decrypt(dst, src[:x.blockSize]) src = src[x.blockSize:] dst = dst[x.blockSize:] }}
To secure the communication, DOKU implements Shared Key Hash Value - an additional parameter from Merchant or DOKU, called SIGNATURE. This parameter value is hashed using AES hash method with combination of ENCRYPTIONKEY. The hashed SIGNATURE generated by partner will be validated with hashed SIGNATURE generated by DOKU System and vice versa. If match, then it will be considered genuine request or response.
You can access KIRIMDOKU API staging by using these keys:
AGENTKEY: A41418
ENCRYPTIONKEY: 627054fevj1sutvs
Below is the sample code to generate signature:
Step - 1
Combine your agentKey and requestId to generate a raw string. Example:
String concatenatedString = "A41418" + "e8a32355-e202-4bc7-8ae7-ad4e7316bbcb"
concatednatedString will result in "A41418e8a32355-e202-4bc7-8ae7-ad4e7316bbcb"
Step - 2
An example of JAVA implementation to generate SIGNATURE is shown as below:
private static final String ALGORITHM = "AES";
public static String encrypt(String valueToEnc, String encKey) throws Exception {
Key key = new SecretKeySpec(encKey.getBytes(), ALGORITHM);
Cipher c = Cipher.getInstance(ALGORITHM);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encValue = c.doFinal(valueToEnc.getBytes());
return new String(Base64.encodeBase64(encValue));
}
Step - 3
Use concatenatedString with the 16 char ENCRYPTIONKEY given by KIRIMDOKU system to generate SIGNATURE content. An example of JAVA implementation is shown as below:
String concatenatedString = "A41418" + "e8a32355-e202-4bc7-8ae7-ad4e7316bbcb";
String encryptionKey = "627054fevj1sutvs";
String signature = encrypt(concatenatedString, encryptionKey);
// signature value shoud be:
// HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0
KIRIMDOKU API
This API reference is organized by KIRIMDOKU team. Any changes or updates will be notified by authorized personnel from DOKU to partners.
PING
Request Example
curl -X POST \
https://staging.doku.com/apikirimdoku/ping \
-H 'Content-Type: application/json' \
-d '{
"agentKey": "A41418",
"requestId": "e8a32355-e202-4bc7-8ae7-ad4e7316bbcb",
"signature": "HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0"
}'
Endpoint | Method | Definition |
---|---|---|
/ping | HTTP POST | Check connection availibility to API KIRIMDOKU |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
Success Response Example
{
"status" : 0,
"message" : "Ok"
}
Failed Response Example
{
"status" : 9,
"message" : "Unathorized access"
}
REQUEST BODY
Name | Type | Mandatory | Description |
---|---|---|---|
agentKey | String | Mandatory | Given AGENTKEY |
requestId | String | Mandatory | A unique request identifier. It is advisable to use UUID format. |
signature | String | Mandatory | Refer to Shared Key Hash Value section. |
RESPONSE BODY
Name | Type | Description |
---|---|---|
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Ok ) |
Check Balance
Request Example
curl -X POST \
https://staging.doku.com/apikirimdoku/checkbalance \
-H 'Content-Type: application/json' \
-d '{
"agentKey": "A41418",
"requestId": "e8a32355-e202-4bc7-8ae7-ad4e7316bbcb",
"signature": "HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0"
}'
Endpoint | Method | Definition |
---|---|---|
/checkbalance | HTTP POST | To check partner last deposit balance |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
Success Response Example
{
"status": 0,
"message": "Check balance success",
"balance": {
"corporateName": "ABC Corp (TEST)",
"creditLimit": 0.000000,
"creditAlertLimit": 0.000000,
"creditLastBalance": 9999696393837.600000
}
}
Failed Response Example
{
"status" : 9,
"message" : "Unathorized access"
}
REQUEST BODY
Name | Type | Mandatory | Description |
---|---|---|---|
agentKey | String | Mandatory | Given AGENTKEY |
requestId | String | Mandatory | A unique request identifier. It is advisable to use UUID format. |
signature | String | Mandatory | Refer to Shared Key Hash Value section. |
RESPONSE BODY
Name | Type | Description |
---|---|---|
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Check balance success ) |
balance | Object | Refer to Balance Object section. |
Check Rates
Request Example
curl --location --request GET 'https://staging.doku.com/apikirimdoku/corporate/rate' \--header 'requestId: e8a32355-e202-4bc7-8ae7-ad4e7316bbcb' \--header 'agentKey: A41418' \--header 'signature: HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0' \--data-raw ''
Endpoint | Method | Definition |
---|---|---|
/corporate/rate | HTTP GET | To fetch partner's exchange rates of all currencies |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
Success Response Example
{
"status": 0,
"message": "Success",
"corporate": "ABC Corp (TEST)",
"timestamp": "2021-12-15T15:22:29.+0700",
"data": [
{
"senderCurrency": "IDR",
"receivingCurrency": "IDR",
"rate": 1.0
},
{
"senderCurrency": "SGD",
"receivingCurrency": "IDR",
"rate": 10783.05
}]
}
Failed Response Example
{
"status": 21,
"message": "Rate is not found",
"corporate": "ABC Corp (TEST)",
"timestamp": "2021-12-01T18:22:03.+0700"
}
{
"status" : 9,
"message" : "Unathorized access"
}
RESPONSE BODY
Name | Type | Description |
---|---|---|
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Success ) |
corporate | String | Partner's corporate name |
timestamp | Timestamp | YYYY-mm-DDTHH:MM:SS |
data | Object | List of exchange rates. Refer to Exchange Rates Object section. |
Inquiry Bank Transfer
Request Example
curl -X POST \
https://staging.doku.com/apikirimdoku/cashin/inquiry \
-H 'Content-Type: application/json' \
-H 'agentKey: A41418' \
-H 'requestId: e8a32355-e202-4bc7-8ae7-ad4e7316bbcb' \
-H 'signature: HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0' \
-d '{
"channel": {
"code": "07"
},
"beneficiaryAccount": {
"bank": {
"code": "CENAIDJA",
"countryCode": "ID",
"id": "014",
"name": "BANK BCA"
},
"city": "Jakarta",
"name": "FHILEA HERMANUS",
"number": "0803944123"
},
"beneficiaryCountry": {
"code": "ID"
},
"beneficiaryCurrency": {
"code": "IDR"
},
"senderCountry": {
"code": "ID"
},
"senderCurrency": {
"code": "IDR"
},
"senderAmount": 10000
}'
Success Response Example
{
"status": 0,
"message": "Transfer Inquiry Approve",
"inquiry": {
"idToken": "I040781880663070",
"senderCountry": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"senderCurrency": {
"code": "IDR"
},
"beneficiaryCountry": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"beneficiaryCurrency": {
"code": "IDR"
},
"channel": {
"code": "07",
"name": "Bank Deposit"
},
"forexReference": {
"id": 2402, "forex": { "origin": { "code": "IDR" }, "destination": { "code": "IDR" } }, "rate" : 1.0, "createdTime" : 1614219703986 }, "fund" : { "origin" : { "amount" : 10000.000000, "currency" : "IDR" }, "fees": { "total": 3000.000000, "currency": "IDR", "components": [ { "description": "Default Fee", "amount": 3000.000000 } ], "additionalFee": 0.000000, "fixedFee": 0.000000 }, "destination": { "amount": 10000.00, "currency": "IDR" } }, "beneficiaryAccount": {
"id": null
"bank": {
"id": "014",
"code": "CENAIDJA",
"name": "Bank Central Asia BCA",
"city": "Jakarta",
"countryCode": "ID",
"groupBank": "Bank Central Asia BCA",
"province": "Jakarta"
},
"number": "0803944123",
"name": "FHILEA HERMANUS",
"city": "Jakarta,"
"address": "null"
}
}
}
Endpoint | Method | Definition |
---|---|---|
/cashin/inquiry | HTTP POST | Get beneficiary account information details |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
agentKey | Mandatory | Given AGENTKEY |
requestId | Mandatory | A unique request identifier. It is advisable to use UUID format. |
signature | Mandatory | Refer to Shared Key Hash Value section. |
REQUEST BODY
Name | Type | Mandatory | Description |
---|---|---|---|
channel | Object | Mandatory | Refer to Channel Object section. |
beneficiaryAccount | Object | Mandatory | Refer to Beneficiary Account Object section. |
beneficiaryCountry | Object | Mandatory | Refer to Beneficiary Country Object section. |
beneficiaryCurrency | Object | Mandatory | Refer to Beneficiary Currency Object section. |
senderCountry | Object | Mandatory | Refer to Sender Country Object section. |
senderCurrency | Object | Mandatory | Refer to Sender Currency Object section. |
senderAmount | Numeric | Mandatory | Minimum IDR 10.000, Maximum IDR 25.000.000 |
RESPONSE BODY
Name | Type | Description |
---|---|---|
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Transfer Inquiry Approve ) |
inquiry | Object | Refer to Inquiry Object section. |
Inquiry DOKU Wallet
Request Example
curl -X POST \
https://staging.doku.com/apikirimdoku/cashin/inquiry \
-H 'Content-Type: application/json' \
-H 'agentKey: A41418' \
-H 'requestId: e8a32355-e202-4bc7-8ae7-ad4e7316bbcb' \
-H 'signature: HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0' \
-d '{
"channel": {
"code": "04"
},
"beneficiaryAccount": {
"city": "Jakarta",
"name": "FHILEA HERMANUS"
},
"beneficiaryWalletId": "lea@doku.com",
"beneficiaryCountry": {
"code": "ID"
},
"beneficiaryCurrency": {
"code": "IDR"
},
"senderCountry": {
"code": "ID"
},
"senderCurrency": {
"code": "IDR"
},
"senderAmount": 10000
}'
Success Response Example
{
"status": 0,
"message": "Inquiry succeed",
"inquiry": {
"idToken": "I01613251428268",
"senderCountry": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"senderCurrency": {
"code": "IDR"
},
"beneficiaryCountry": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"beneficiaryCurrency": {
"code": "IDR"
},
"channel": {
"code": "04",
"name": "Cash To Wallet"
}, "forexReference": {
"id": 2402, "forex": { "origin": { "code": "IDR" }, "destination": { "code": "IDR" } }, "rate" : 1.0, "createdTime" : 1614219703986 }, "fund" : { "origin" : { "amount" : 10000.000000, "currency" : "IDR" }, "fees": { "total": 1000.000000, "currency": "IDR", "components": [ { "description": "Default Fee", "amount": 1000.000000 } ], "additionalFee": 0.000000, "fixedFee": 0.000000 }, "destination": { "amount": 10000.000000, "currency": "IDR"
} }, "beneficiaryWalletId": "lea@doku.com",
"beneficiaryWalletName": "FHILEA HERMANUS"
}
}
Endpoint | Method | Definition |
---|---|---|
/cashin/inquiry | HTTP POST | Get beneficiary account information details |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
agentKey | Mandatory | Given AGENTKEY |
requestId | Mandatory | A unique request identifier. It is advisable to use UUID format. |
signature | Mandatory | Refer to Shared Key Hash Value section. |
REQUEST BODY
Name | Type | Mandatory | Description |
---|---|---|---|
channel | Object | Mandatory | Refer to Channel Object section. |
beneficiaryAccount | Object | Mandatory | Refer to Beneficiary Account Object section. |
beneficiaryWalletId | String | Mandatory | Beneficiary DOKU Wallet ID e.g: lea@doku.com |
beneficiaryCountry | Object | Mandatory | Refer to Beneficiary Country Object section. |
beneficiaryCurrency | Object | Mandatory | Refer to Beneficiary Currency Object section. |
senderCountry | Object | Mandatory | Refer to Sender Country Object section. |
senderCurrency | Object | Mandatory | Refer to Sender Currency Object section. |
senderAmount | Numeric | Mandatory | Minimum IDR 10.000, Maximum IDR 10.000.000 * |
RESPONSE BODY
Name | Type | Description |
---|---|---|
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Inquiry succeed ) |
inquiry | Object | Refer to Inquiry Object section. |
Remit Bank Transfer
Request Example
curl -X POST \
https://staging.doku.com/apikirimdoku/cashin/remit \
-H 'Content-Type: application/json' \
-H 'agentKey: A41418' \
-H 'requestId: e8a32355-e202-4bc7-8ae7-ad4e7316bbcb' \
-H 'signature: HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0' \
-d '{
"channel": {
"code": "07"
},
"inquiry": {
"idToken": "I01429544261270"
},
"beneficiary": {
"country": {
"code": "ID"
},
"firstName": "FHILEA",
"lastName": "HERMANUS",
"phoneNumber": "628156056051"
},
"beneficiaryCity": "Jakarta",
"beneficiaryCountry": {
"code": "ID"
},
"beneficiaryAccount": {
"bank": {
"id": "014",
"code": "CENAIDJA",
"name": "BANK BCA",
"countryCode": "ID"
},
"city": "Jakarta",
"name": "FHILEA HERMANUS",
"number": "0803944123"
},
"beneficiaryCurrency": {
"code": "IDR"
},
"sender": {
"country": {
"code": "ID"
},
"firstName": "FHILEA",
"lastName": "HERMANUS",
"phoneNumber": "628156056051",
"birthDate": "1900-01-01",
"personalId": "01234567890",
"personalIdType": "KTP",
"personalIdCountry": {
"code": "ID"
}
},
"senderCountry": {
"code": "ID"
},
"senderCurrency": {
"code": "IDR"
},
"senderAmount": 10000,
"sendTrxId": "remit-20191007-001"
}'
Success Response Example
{
"status": 0,
"message": "Remit accepted",
"remit": {
"paymentData": {
"mallId": "2",
"chainMallId": null,
"accountNumber": "00",
"accountName": "ABC Corp (TEST)",
"channelCode": "07",
"inquiryId": "I01429544261270",
"currency": "IDR",
"amount": "10000.00",
"trxCode": "bc629bff-0cc9-45d3-8fa8-f27341ca8228",
"hostRefNumber": null,
"issuerName": null,
"responseCode": "00",
"responseMsg": "Transfer Approve",
"paymentSystrace": null
},
"transactionId": "DK0856068",
"transactionStatus": 50
}
}
Endpoint | Method | Definition |
---|---|---|
/cashin/remit | HTTP POST | Execute transfer to the beneficiary |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
agentKey | Mandatory | Given AGENTKEY |
requestId | Mandatory | A unique request identifier. It is advisable to use UUID format. |
signature | Mandatory | Refer to Shared Key Hash Value section. |
REQUEST BODY
Name | Type | Mandatory | Description |
---|---|---|---|
channel | Object | Mandatory | Refer to Channel Object section. |
inquiry | Object | Mandatory | Refer to Inquiry Object section. |
beneficiary | Object | Mandatory | Refer to Beneficiary Object section. |
beneficiaryCity | String | Mandatory | Beneficiary city location.e.g: Jakarta |
beneficiaryCountry | Object | Mandatory | Refer to Country Object section. |
beneficiaryAccount | Object | Mandatory | Refer to Beneficiary Account Object section. |
beneficiaryCurrency | Object | Mandatory | Refer to Currency Object section. |
sender | Object | Mandatory | Refer to Sender Object section. |
senderCountry | Object | Mandatory | Refer to Country Object section. |
senderCurrency | Object | Mandatory | Refer to Currency Object section. |
senderAmount | Numeric | Mandatory | Minimum IDR 10.000, Maximum IDR 25.000.000 |
sendTrxId | String | Not Mandatory | Transaction ID from merchant side. |
senderNote | String | Not Mandatory | Note or information from sender. |
RESPONSE BODY
Name | Type | Description |
---|---|---|
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Remit accepted ) |
remit | Object | Refer to Remit Object section. |
Remit DOKU Wallet
Request Example
curl -X POST \
https://staging.doku.com/apikirimdoku/cashin/remit \
-H 'Content-Type: application/json' \
-H 'agentKey: A41418' \
-H 'requestId: e8a32355-e202-4bc7-8ae7-ad4e7316bbcb' \
-H 'signature: HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0' \
-d '{
"channel": {
"code": "04"
},
"inquiry": {
"idToken": "I01613251428268"
},
"beneficiary": {
"country": {
"code": "ID"
},
"firstName": "FHILEA",
"lastName": "HERMANUS",
"phoneNumber": "628156056051"
},
"beneficiaryCity": "Jakarta",
"beneficiaryCountry": {
"code": "ID"
},
"beneficiaryAccount": {
"city": "Jakarta",
"name": "FHILEA HERMANUS"
},
"beneficiaryWalletId": "lea@doku.com",
"beneficiaryCurrency": {
"code": "IDR"
},
"sender": {
"country": {
"code": "ID"
},
"firstName": "FHILEA",
"lastName": "HERMANUS",
"phoneNumber": "628156056051",
"birthDate": "1900-01-01",
"personalId": "01234567890",
"personalIdType": "KTP",
"personalIdCountry": {
"code": "ID"
}
},
"senderCountry": {
"code": "ID"
},
"senderCurrency": {
"code": "IDR"
},
"senderAmount": 10000,
"sendTrxId": "remit-20191007-002"
}'
Success Response Example
{
"status": 0,
"message": "Remit accepted",
"remit": {
"transactionId": "DK0857458",
"transactionStatus": 50
}
}
Endpoint | Method | Definition |
---|---|---|
/cashin/remit | HTTP POST | Execute transfer to the beneficiary |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
agentKey | Mandatory | Given AGENTKEY |
requestId | Mandatory | A unique request identifier. It is advisable to use UUID format. |
signature | Mandatory | Refer to Shared Key Hash Value section. |
REQUEST BODY
Name | Type | Mandatory | Description |
---|---|---|---|
channel | Object | Mandatory | Refer to Channel Object section. |
inquiry | Object | Mandatory | Refer to Inquiry Object section. |
beneficiary | Object | Mandatory | Refer to Beneficiary Object section. |
beneficiaryCity | String | Mandatory | Beneficiary city location. e.g: Jakarta |
beneficiaryCountry | Object | Mandatory | Refer to Country Object section. |
beneficiaryAccount | Object | Mandatory | Refer to Beneficiary Account Object section. |
beneficiaryWalletId | String | Mandatory | Beneficiary DOKU Wallet IDe.g: lea@doku.com |
beneficiaryCurrency | Object | Mandatory | Refer to Currency Object section. |
sender | Object | Mandatory | Refer to Sender Object section. |
senderCountry | Object | Mandatory | Refer to Country Object section. |
senderCurrency | Object | Mandatory | Refer to Currency Object section. |
senderAmount | Numeric | Mandatory | Minimum IDR 10.000, Maximum IDR 10.000.000 * |
sendTrxId | String | Not Mandatory | Transaction ID from merchant side. |
senderNote | String | Not Mandatory | Note or information from sender. |
RESPONSE BODY
Name | Type | Description |
---|---|---|
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Remit accepted ) |
remit | Object | Refer to Remit Object section. |
Transaction Info
Request Example
curl -X POST \
https://staging.doku.com/apikirimdoku/transaction/info \
-H 'Content-Type: application/json' \
-H 'agentKey: A41418' \
-H 'requestId: e8a32355-e202-4bc7-8ae7-ad4e7316bbcb' \
-H 'signature: HL8PGPqGBaTOgdbZio9r1oJqT7GgNpwPU6vKZxHAmQBSEiCYuClafD2AzsNtvPP0' \
-d '{
"transactionId": "DK0856068"
}'
Success Response Example
{
"transaction": {
"id": "DK0856068",
"inquiryId": "I01429544261270",
"sendTrxId": "b062e358-8a8d-498d-90c2-1bed87c8dea3",
"status": 50,
"createdTime": 1569234448061,
"cashInTime": "2019-09-23 17:27:28",
"agent": {
"code": "A41418",
"country": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"user": {
"username": "oabc",
"name": "o abc"
}
},
"channel": {
"code": "07",
"name": "Bank Deposit"
},
"sender": {
"id": "CID0154734",
"firstName": "FHILEA",
"lastName": "HERMANUS",
"personalIdType": "KTP",
"personalId": "01234567890",
"birthDate": "1900-01-01",
"phoneNumber": "628156056051",
"gender": "NULL",
"country": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"cityName": null,
"address": null,
"postalCode": null,
"email": null
},
"beneficiary": {
"id": "CID0154735",
"firstName": "FHILEA",
"lastName": "HERMANUS",
"personalIdType": null,
"personalId": null,
"phoneNumber": "628156056051",
"gender": "NULL",
"country": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"cityName": null,
"address": null,
"postalCode": null,
"email": null
},
"fund": {
"origin": {
"country": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"currency": "IDR",
"amount": 10000.000000
},
"destination": {
"country": {
"code": "ID",
"name": "Indonesia",
"currency": {
"code": "IDR"
}
},
"currency": "IDR",
"amount": 10000.000000
},
"fees": {
"total": 6500.000000,
"fixedFee": 0.000000,
"additionalFee": 0.000000,
"currency": "IDR",
"components": [
{
"description": "Default Fee",
"amount": 6500.000000
}
]
}
},
"transactionlog": {
"status": 0,
"statusMessage": "Processed",
"referenceStatus": "00",
"referenceMessage": "Transfer Approve",
"channelCode": "07"
}
},
"status": 0,
"message": "Transaction info success"
}
Endpoint | Method | Definition |
---|---|---|
/transaction/info | HTTP POST | Get transaction status or information |
REQUEST HEADER
Name | Mandatory | Value |
---|---|---|
Content-Type | Mandatory | application/json |
agentKey | Mandatory | Given AGENTKEY |
requestId | Mandatory | A unique request identifier. It is advisable to use UUID format. |
signature | Mandatory | Refer to Shared Key Hash Value section. |
REQUEST BODY
Name | Type | Mandatory | Description |
---|---|---|---|
transactionId | String | Mandatory | Transaction Id can be filled with Inquiry idToken, Remit transactionId or Remit sendTrxId value. |
RESPONSE BODY
Name | Type | Description |
---|---|---|
transaction | Object | Use transaction.status value to determine whether beneficiary receiving the
funds or not.(Success: 50 , Possible
transaction status)Refer to Transaction Object section |
status | Integer | Response status (Success: 0 ) |
message | String | Response message (Success: Transaction info success ) |
Refund Notification
Request Example performed by KIRIMDOKU to Partners
{
"activityCode"": "200",
"transactionId": "DK0802623",
"processDate":1548322727830
"message":"Transaction is refunded"
}
The purpose of refund notification is to notify partners when refund occured in KIRIMDOKU system. To receive refund notifications, prepare Callback URLs for sandbox and production environment.
Refund notification is optional. If not implemented, partners may opted to call API transaction info to fetch the status of a transaction.
Response Example performed by Partners to KIRIMDOKU
{
"status"": "true",
"transactionId": "DK0802623",
"responseCode":"00"
"responseMessage":"Successfully processed"
}
Endpoint | Method | Definition |
---|---|---|
Provided by partner | HTTP POST | Refund notify is sent if refund occured in KIRIMDOKU System. We will send it to the partner with the url that has been registered, and the notification will be done maximum 3 times or until the notification callback response is correct. |
REQUEST HEADER
Name | Type | Mandatory | Description | Example |
---|---|---|---|---|
Content-Type | String | Mandatory | The Content-Type field indicates that JSON type is acceptable to send to the recipient | application/json |
requestId | String | Mandatory | Unique reference identification send by the API partner | "fd53b1e3-9c35-4dfa-a95ca8dbc5695485" |
agentKey | String | Mandatory | Hash key of authorization agent | "A41418" |
signature | ENC | Mandatory | Unique authorization code generated by partner validated by KIRIMDOKU |
REQUEST BODY
Name | Type | Mandatory | Description | Example |
---|---|---|---|---|
transactionId | String | Mandatory | Transaction ID that have been refunded by KIRIMDOKU | "DK0802623" |
activityCode | String | Mandatory | Specific notification code for refund activity | "200" |
message | String | Mandatory | Refund activity message | "Transaction is refunded" |
processDate | Numeric | Mandatory | Time and date of notification in epoch format | 1548322727830 |
REFUND RESPONSE
After partners received refund notification from KIRIMDOKU system, partners must response with the following specification.
Name | Type | Mandatory | Description | Example |
---|---|---|---|---|
status | Boolean | Mandatory | Refund notification status | "true" when the notification is processed succesfully, "false" otherwise |
transactionId | String | Mandatory | Transaction ID that is sent from KIRIMDOKU to request notify | "DK0802623" |
responseCode | Numeric | Mandatory | Flagging code for respond notification of refund activity | "00" when the callback is processed succesfully, "01" when the callback has been processed before, other code when failed occured |
responseMessage | String | Mandatory | A message describing the respond notification | "Successfully processed" |
Request Objects
CHANNEL OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
code | String | Mandatory | Use 07 for Bank Transfer, and 04 for DOKU Wallet Transfer |
BENEFICIARY ACCOUNT OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
bank | Object | Mandatory | Refer to Bank Object section. (Bank Transfer requests only) |
address | String | Not Mandatory | Beneficiary account address |
city | String | Mandatory | Beneficiary account city |
name | String | Mandatory | Beneficiary account name |
number | String | Mandatory | Beneficiary account number (Bank Transfer requests only) |
BANK OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
code | String | Mandatory | Bank Swift code. (List of Supported Banks) |
countryCode | String | Mandatory | Bank country code. (Use ID for Indonesia) |
id | String | Mandatory | Indonesian Bank code. (List of Supported Banks) |
name | String | Mandatory | Bank name. (List of Supported Banks) |
COUNTRY OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
code | String | Mandatory | Use ID for Indonesia |
CURRENCY OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
code | String | Mandatory | Use IDR for Indonesian Rupiah |
INQUIRY OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
idToken | String | Mandatory | Inquiry idToken from last Inquiry API. |
BENEFICIARY OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
country | Object | Mandatory | Refer to Country Object section. |
firstName | String | Mandatory | Beneficiary first name. |
lastName | String | Mandatory | Beneficiary last name. |
phoneNumber | String | Mandatory | Beneficiary phone number. |
SENDER OBJECT
Name | Type | Mandatory | Description |
---|---|---|---|
country | Object | Mandatory | Refer to Country Object section. |
firstName | String | Mandatory | Sender first name. |
lastName | String | Mandatory | Sender last name. |
phoneNumber | String | Mandatory | Sender phone number. |
birthDate | String | Mandatory | Sender birth date. In YYYY-MM-DD format. |
personalId | String | Mandatory | Sender personal (national) id number. |
personalIdType | String | Mandatory | Sender personal (national) id type. Example :KTP , PASSPORT |
personalIdCountry | Object | Mandatory | Country code of publisher of sender's personal ID. Refer to Country Object section. |
Response Objects
BALANCE OBJECT
Name | Type | Description |
---|---|---|
corporateName | String | Partner's corporate name |
creditLimit | Decimal | The remaining balance a partner can hold. If partner's last deposit balance is below this amount, then the remaining last deposit balance cannot be used for transactions. |
creditAlertLimit | Decimal | To give email alert to partners when the amount of money in partner's last deposit balance reaching or below this amount. |
creditLastBalance | Decimal | Partner's last deposit balance |
EXCHANGE RATES OBJECT
Name | Type | Description |
---|---|---|
senderCurrency | String | Source currency code. E.g: SGD for Singapore Dollar |
receivingCurrency | String | Target (receiving) currency code E.g: IDR for Indonesian Rupiah |
rate | Decimal | Exchange rate value |
INQUIRY OBJECT
Name | Type | Description |
---|---|---|
idToken | String | Id from the last inquiry. Please save this id to be used in Remit API. |
senderCountry | Object | Refer to Country Object section. |
senderCurrency | Object | Refer to Currency Object section. |
beneficiaryCountry | Object | Refer to Country Object section. |
beneficiaryCurrency | Object | Refer to Currency Object section. |
channel | Object | Refer to Channel Object section. |
forexReference | Object | Refer to Forex Reference Object section. |
fund | Object | Refer to Fund Object section. |
beneficiaryAccount | Object | Refer to Beneficiary Account Object
section. (Bank Transfer responses only) |
beneficiaryWalletId | String | Beneficiary wallet ID information. (DOKU Wallet responses only) |
beneficiaryWalletName | String | Beneficiary wallet name information. (DOKU Wallet responses only) |
COUNTRY OBJECT
Name | Type | Description |
---|---|---|
code | String | Country code. Example: ID |
name | String | Country name. Example: Indonesia |
currency | Object | Refer to Currency Object section. |
CURRENCY OBJECT
Name | Type | Description |
---|---|---|
code | String | Currency code. Example: IDR |
CHANNEL OBJECT
Name | Type | Description |
---|---|---|
code | String | Channel code. Example: 07 or 04 |
name | String | Channel name. Example: Bank Deposit or Cash To Wallet |
BENEFICIARY ACCOUNT OBJECT
Name | Type | Description |
---|---|---|
id | Integer | Beneficiary bank account id. Filled after remit is success. |
bank | Object | Beneficiary bank information. Refer to Bank Object section. |
number | String | Beneficiary account number information. |
name | String | Beneficiary account name information. |
city | String | Beneficiary account city information. |
address | String | Beneficiary account address information. |
BANK OBJECT
Name | Type | Description |
---|---|---|
id | String | Bank id information. Example: 014 |
code | String | Bank code information. Example: CENAIDJA |
name | String | Bank name information. Example: BANK BCA |
city | String | City of the bank. Example: Jakarta |
countryCode | String | Bank country code information. Example: ID |
groupBank | String | Group bank information |
province | String | Province of the bank |
REMIT OBJECT
Name | Type | Description |
---|---|---|
paymentData | Object | Refer to Payment Data Object section. (Bank Transfer responses only) |
transactionId | String | Remit transaction ID. Please save this id as the transaction reference. |
transactionStatus | String | Remit transaction status. Use this status to determine whether beneficiary receiving the funds or not. (Success: 50 , Possible transaction status) |
PAYMENT DATA OBJECT
Name | Type | Description |
---|---|---|
mallId | String | - |
chainMallId | String | - |
accountNumber | String | - |
accountName | String | Corporate name information. |
channelCode | String | Channel code. Example: 07 or 04 |
inquiryId | String | Inquiry idToken used in Remit API. |
currency | String | Currency information. Example: IDR |
amount | String | Amount sent to beneficiary. |
trxCode | String | - |
hostRefNumber | String | - |
issuerName | String | - |
responseCode | String | - |
responseMsg | String | - |
paymentSystrace | String | - |
FOREX REFERENCE OBJECT
Name | Type | Description |
---|---|---|
id | Integer | Forex reference ID |
forex | Object | Refer to Forex Object section. |
rate | Decimal | Exchange rate from origin currency to destination currency |
createdTime | Timestamp | Forex creation time |
FOREX OBJECT
Name | Type | Description |
---|---|---|
origin | Object | Origin currency code. Refer to Currency Object section. |
destination | Object | Destination currency code. Refer to Currency Object section. |
FUND OBJECT
Name | Type | Description |
---|---|---|
origin | Object | Source amount. Refer to Amount Object section. |
fees | Object | Refer to Fees Object section. |
destination | Object | Destination amount. Refer to Amount Object section. |
AMOUNT OBJECT
Name | Type | Description |
---|---|---|
amount | Decimal | Amount of money |
currency | String | Currency code |
FEES OBJECT
Name | Type | Description |
---|---|---|
total | Decimal | Amount of fee charged to partner's deposit (default fee). |
currency | String | Default fee's currency (follows the origin currency). |
components | Object | Components of default fee. Refer to Fees Component Object section. |
additionalFee | Decimal | Fee charged to the beneficiary, deducted from the amount received (currency follows the destination currency) |
fixedFee | Decimal | Fee for account validation(currency follows the destination currency) |
FEES COMPONENT OBJECT
Name | Type | Description |
---|---|---|
description | String | Default fee |
amount | Decimal | Amount of default fee |
TRANSACTION OBJECT
Name | Type | Description |
---|---|---|
id | String | Remit transaction ID. |
inquiryId | String | Inquiry idToken from the last Inquiry API. |
sendTrxId | String | Transaction ID from merchant's side. |
status | String | Remit transaction status.
Use this status to determine whether beneficiary receiving the funds or not.
(Success: 50 , Possible transaction status) |
createdTime | Timestamp | Payment creation time (in epoch time format) |
cashInTime | Timestamp | Payment time YYYY-mm-DD HH:MM:SS |
senderNote | String | Note or information from sender. |
agent | Object | Refer to Agent Object section |
channel | Object | Refer to Channel Object section |
sender | Object | Refer to Sender Object section |
beneficiary | Object | Refer to Beneficiary Object section |
fund | Object | Refer to Fund (Transaction Info) Object section |
transactionLog | Object | Refer to Transaction Log Object section |
AGENT OBJECT
Name | Type | Description |
---|---|---|
code | String | Agent's code |
country | Object | Agent's country Refer to Country Object section |
user | Object | Agent's name and user name Refer to User Object section |
USER OBJECT
Name | Type | Description |
---|---|---|
username | String | Agent's username |
name | String | Agent's name |
SENDER OBJECT
Name | Type | Description |
---|---|---|
id | String | Sender id |
firstName | String | Sender first name. |
lastName | String | Sender last name. |
personalIdType | String | Sender personal (national) id type. Example: KTP, PASSPORT |
personalId | String | Sender personal (national) id number |
birthDate | String | Sender birth date. In YYYY-MM-DD format |
phoneNumber | String | Sender phone number |
gender | String | Gender of the sender |
country | Object | Sender country. Refer to Country Object section |
cityName | String | Sender city name |
address | String | Sender address |
postalCode | String | Sender postal code |
String | Sender email |
BENEFICIARY OBJECT
Name | Type | Description |
---|---|---|
id | String | Beneficiary id |
firstName | String | Beneficiary first name |
lastName | String | Beneficiary last name |
personalIdType | String | Beneficiary personal (national) id type. Example: KTP, PASSPORT |
personalId | String | Beneficiary personal (national) id number |
phoneNumber | String | Beneficiary phone number |
gender | String | Gender of the beneficiary |
country | Object | Beneficiary country. Refer to Country Object section |
cityName | String | Beneficiary city name |
address | String | Beneficiary address |
postalCode | String | Beneficiary postal code |
String | Beneficiary email |
FUND (TRANSACTION INFO) OBJECT
Name | Type | Description |
---|---|---|
origin | Object | Source amount. Refer to Amount (Transaction Info) Object section |
destination | Object | Destination amount. Refer to Amount (Transaction Info) Object section |
fees | Object | Refer to Fees Object section |
AMOUNT (TRANSACTION INFO) OBJECT
Name | Type | Description |
---|---|---|
country | Object | Refer to Country Object section |
currency | String | Currency code |
amount | Decimal | Amount of money |
TRANSACTION LOG OBJECT
Name | Type | Description |
---|---|---|
status | String | Remit status code |
statusMessage | String | Remit status message |
referenceStatus | String | Response code from the bank/issuer |
referenceMessage | String | Response message from the bank/issuer |
channelCode | String | Channel code. Example: 07 or 04 |
API Response
Response Status
Status | Description | Possible Reason |
---|---|---|
-1 | Internal Error | Internal engine error/Temporary unavailable/Unreachable access gateway. |
0 | Success | Indicate API Call is performed successfully. |
1 | Failed | Indicate API Call is performed unsuccessfully. (Example: Inquiry is failed due to account not found or other reason.) |
9 | Unathorized access | Request header parameters is incorrect/missing. |
11 | Invalid parameters | Request body parameters is incorrect/missing. E.g: Sender country is not valid. |
13 | Duplicate sendTrxId Reference | The value of sendTrxId must be unique |
16 | Missing configuration | Merchant is not properly configured. E.g: Fee for channel bank deposit has not been set. |
29 | Rejected | Transaction with high risk. Caused by several reasons:
|
55 | Timeout | Internal connection timeout. |
91 | Inactive | Merchant inactive. |
95 | Corporate credit limit has exceeded | Caused by a transaction where partner last deposit balance reaching or below credit alert limit. |
97 | Account is Invalid | Caused by beneficiary account number has failed inquiry 4 times in the past 2 hours. |
98 | Rejected | Caused by beneficiary account number has been rejected in the last 2 hours. |
99 | Invalid Json | Invalid Json format. |
99 | Expired Inquiry Token | Inquiry token is expired after 30 days. |
Transaction Status
Status | Description |
---|---|
0 | Transaction status is unknown. |
20 |
Timeout (pending) transaction. Status will be changed after reconciliation (T+1 working
days). Labeled with UNPAID in the dashboard.Do not treat transaction with this status as success or failed. |
35 |
Transfer failed to be processed. Labeled with FAILED in the dashboard.Treat transaction with this status as failed. |
40 | Transaction has been refunded. |
50 |
Transaction is sucessfully processed. Labeled with PAID in the dashboard.Treat transaction with this status as success. |
65 |
Transaction is on process to change from pending to either success or failed. Labeled with
PENDING PROCESS in the dashboard.Do not treat transaction with this status as success or failed. |
List of Supported Banks
KIRIMDOKU API supports transfer to over 100 Banks in Indonesia. Please refer to below information regarding Bank details:
No | Bank Name | Code | SWIFT Code |
---|---|---|---|
1 | BANK BRI | 002 | BRINIDJA |
2 | BANK MANDIRI | 008 | BMRIIDJA |
3 | BANK NEGARA INDONESIA (BNI 46) | 009 | BNINIDJA |
4 | BANK DANAMON | 011 | BDINIDJA |
5 | BANK PERMATA | 013 | BBBAIDJA |
6 | BANK BCA | 014 | CENAIDJA |
7 | BANK BII MAYBANK | 016 | IBBKIDJA |
8 | BANK PANIN | 019 | PINBIDJA |
9 | BANK CIMB NIAGA/BANK CIMB NIAGA SYARIAH | 022 | BNIAIDJA |
10 | BANK UOB BUANA INDONESIA | 023 | BBIJIDJA |
11 | BANK OCBC NISP | 028 | NISPIDJA |
12 | CITIBANK | 031 | CITIIDJX |
13 | BANK OF AMERICA | 033 | BOFAID2X |
14 | BANK CCB INDONESIA | 036 | BWKIIDJA |
15 | BANK ARTHA GRAHA | 037 | ARTGIDJA |
16 | BANGKOK BANK LTD | 040 | BKKBIDJA |
17 | THE BANK OF TOKYO MITSUBISHI UFJ LTD | 042 | BOTKIDJX |
18 | BANK DBS INDONESIA | 046 | DBSBIDJA |
19 | BANK RESONA PERDANIA | 047 | BPIAIDJA |
20 | BANK MIZUHO INDONESIA | 048 | MHCCIDJA |
21 | STANDARD CHARTERED BANK | 050 | SCBLIDJX |
22 | BANK CAPITAL INDONESIA | 054 | BCIAIDJA |
23 | BANK BNP PARIBAS | 057 | BNPAIDJA |
24 | BANK ANZ INDONESIA | 061 | ANZBIDJX |
25 | BANK OF CHINA LIMITED | 069 | BKCHIDJA |
26 | BANK BUMI ARTA | 076 | BBAIIDJA |
27 | BANK HSBC INDONESIA | 087 | HSBCIDJA |
28 | BANK RABOBANK | 089 | RABOIDJA |
29 | BANK MUTIARA | 095 | CICTIDJA |
30 | BANK MAYAPADA INTERNATIONAL | 097 | MAYAIDJA |
31 | BANK BJB | 110 | PDJBIDJA |
32 | BPD DKI JAKARTA | 111 | BDKIIDJ1 |
33 | BPD DIY | 112 | PDYKIDJ1 |
34 | BPD JAWA TENGAH | 113 | PDJGIDJ1 |
35 | BANK JATIM | 114 | PDJTIDJ1 |
36 | BPD JAMBI | 115 | PDJMIDJ1 |
37 | BPD ACEH | 116 | PDACIDJ1 |
38 | BPD SUMATERA UTARA | 117 | PDSUIDJ1 |
39 | BPD SUMATERA BARAT/BANK NAGARI | 118 | PDSBIDSP |
40 | BPD RIAU | 119 | PDRIIDJ1 |
41 | BPD SUMATERA SELATAN | 120 | BSSPIDSP |
42 | BPD LAMPUNG | 121 | PDLPIDJ1 |
43 | BPD KALSEL | 122 | PDKSIDJ1 |
44 | BPD KALIMANTAN BARAT | 123 | PDKBIDJ1 |
45 | BPD KALTIM | 124 | PDKTIDJA |
46 | BPD KALTENG | 125 | PDKGIDJ1 |
47 | BPD SULSEL | 126 | PDWSIDJ1 |
48 | BANK SULUTGO | 127 | PDWUIDJ1 |
49 | BPD NTB | 128 | PDNBIDJ1 |
50 | BPD BALI | 129 | PDBAIDJ1 |
51 | BANK NTT | 130 | PDNTIDJ1 |
52 | BANK MALUKU | 131 | PDMLIDJ1 |
53 | BPD PAPUA | 132 | PDIJIDJ1 |
54 | BPD BENGKULU | 133 | PDBKIDJ1 |
55 | BPD SULAWESI TENGAH | 134 | PDWGIDJ1 |
56 | BPD SULAWESI TENGGARA | 135 | PDWRIDJ1 |
57 | BANK BNP (BANK NUSANTARA PARAHYANGAN) | 145 | NUPAIDJ6 |
58 | BANK OF INDIA INDONESIA | 146 | BKIDIDJA |
59 | BANK MUAMALAT | 147 | MUABIDJA |
60 | BANK MESTIKA DHARMA | 151 | MEDHIDS1 |
61 | BANK METRO EXPRESS/BANK SHINHAN INDONESIA | 152 | MEEKIDJ1 |
62 | BANK SINARMAS | 153 | SBJKIDJA |
63 | BANK MASPION INDONESIA | 157 | MASDIDJ5 |
64 | BANK GANESHA | 161 | GNESIDJA |
65 | BANK ICBC | 164 | ICBKIDJA |
66 | BANK QNB KESAWAN | 167 | AWANIDJA |
67 | BANK TABUNGAN NEGARA (BTN) | 200 | BTANIDJA |
68 | BANK SAUDARA (BANK WOORI SAUDARA) | 212 | BSDRIDJA |
69 | BANK TABUNGAN PENSIUNAN NASIONAL (BTPN) | 213 | SUNIIDJA |
70 | BANK VICTORIA SYARIAH | 405 | SWAGIDJ1 |
71 | BSI-BRIS (BANK BRI SYARIAH) | 451 | DJARIDJ1 |
72 | BANK BJB SYARIAH | 425 | SYJBIDJ1 |
73 | BANK MEGA | 426 | MEGAIDJA |
74 | BSI-BNIS (BANK BNI SYARIAH) | 451 | SYNIIDJ1 |
75 | BANK KB BUKOPIN | 441 | BBUKIDJA |
76 | BSI-BSM (BANK SYARIAH MANDIRI) | 451 | BSMDIDJA |
77 | BANK JASA JAKARTA | 472 | JSABIDJ1 |
78 | BANK HANA | 484 | HNBNIDJA |
79 | BANK MNC INTERNASIONAL | 485 | BUMIIDJA |
80 | BANK NEO COMMERCE | 490 | YUDBIDJ1 |
81 | BANK MITRA NIAGA | 491 | MGABIDJ1 |
82 | BANK AGRO NIAGA | 494 | AGTBIDJA |
83 | BANK SBI INDONESIA | 498 | IDMOIDJ1 |
84 | BANK DIGITAL BCA | 501 | ROYBIDJ1 |
85 | BANK NATIONAL NOBU | 503 | LFIBIDJ1 |
86 | BANK SYARIAH MEGA | 506 | BUTGIDJ1 |
87 | BANK INA PERDANA | 513 | INPBIDJ1 |
88 | BANK PANIN DUBAI SYARIAH | 517 | PNBSIDJA |
89 | BANK PRIMA MASTER | 520 | PMASIDJ1 |
90 | BANK BUKOPIN SYARIAH | 521 | SDOBIDJ1 |
91 | BANK SAHABAT SAMPOERNA | 523 | BDIPIDJ1 |
92 | BANK OK INDONESIA | 526 | LMANIDJ1 |
93 | BANK SEABANK INDONESIA | 535 | KSEBIDJ1 |
94 | BANK BCA SYARIAH | 536 | SYCAIDJ1 |
95 | BANK JAGO | 542 | ATOSIDJ1 |
96 | BANK BTPN SYARIAH | 547 | PUBAIDJ1 |
97 | BANK MULTI ARTA SENTOSA | 548 | MASBIDJ1 |
98 | BANK MAYORA | 553 | MAYOIDJA |
99 | BANK INDEX SELINDO | 555 | BIDXIDJA |
100 | BPD BANTEN | 558 | EKSTIDJ1 |
101 | BANK MANDIRI TASPEN POS | 564 | SIHBIDJ1 |
102 | BANK VICTORIA INTERNASIONAL | 566 | BVICIDJA |
103 | BANK HARDA INTERNATIONAL | 567 | HRDAIDJ1 |
104 | BPR/LSB | 600 | - |
105 | BPR KS | 688 | - |
106 | BPR EKA | 699 | - |
107 | LINKAJA | 911 | - |
108 | BANK AGRIS | 945 | AGSSIDJA |
109 | BANK CHINA TRUST INDONESIA | 949 | CTCBIDJA |
110 | BANK COMMONWEALTH | 950 | BICNIDJA |
111 | OVO | OVO | - |