NAV Navbar
Logodoku
  • Introduction
  • Getting Started
  • KIRIMDOKU API
  • API Response
  • List of Supported Banks
  • List of Supported Overseas Banks
  • Changelog
  • Introduction

    KIRIMDOKU API supports three methods of transfer processing, i.e: Bank Transfer, DOKU Wallet Transfer, and Outgoing Remittance. In KIRIMDOKU, these methods are distinguished as channels. See below for features of each channel:

    1. DOKU Wallet Transfer (Channel 04): Wallet transfer service where transfer destination goes to the beneficiary DOKU wallet. With this service, a partner is required to validate the DOKU wallet account through inquiry.

    2. Bank Transfer (Channel 07): Bank transfer service where transfer destination goes to the beneficiary's Indonesian bank and e-wallet account. With this service, a partner is required to validate the bank or e-wallet account through inquiry.

    3. Outgoing Remittance (Channel 09): Bank transfer service where transfer destination goes to the beneficiary's overseas bank account. With this service, users can make money transfers abroad.

    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:

    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, distinguished by using different URLs 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

    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);
    }
    <?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;
        }
    ?>
    package main

    import (
        "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 ecb

    func 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 ecb

    func 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:

    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

    Endpoint Method Definition
    /ping HTTP POST Check connection availibility to API KIRIMDOKU

    REQUEST HEADER

    Name Mandatory Value
    Content-Type Mandatory application/json

    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 Example
    status Integer Response status 0
    message String Response message 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 Example
    status Integer Response status 0
    message String Response message Success
    corporate String Partner's corporate name ABC Corp
    timestamp Timestamp YYYY-mm-DDTHH:MM:SS 2021-12-15T15:22:29.+0700
    data Object List of exchange rates.
    Refer to Exchange Rates Object section.

    Inquiry

    Inquiry 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
    }'
    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
    }'
    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": "09"
      },
      "beneficiaryAccount": {
        "bank": {
          "code": "CIBBSGSG",
          "countryCode": "SG",
          "id": "65232",
          "name": "CIMB BANK BERHAD"
        },
        "city": "Singapore",
        "name": "FHILEA HERMANUS",
        "number": "1001400100"
      },
      "beneficiaryCountry": {
        "code": "SG"
      },
      "beneficiaryCurrency": {
        "code": "SGD"
      },
      "senderCountry": {
        "code": "ID"
      },
      "senderCurrency": {
        "code": "IDR"
      },
      "senderAmount": 1000000
    }'

    Inquiry 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"
        }
      }
    }
    {
      "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"
      }
    }
    {
      "status": 0,
      "message": "Transfer Inquiry Approve",
      "inquiry": {
        "idToken": "I0953314363184",
        "senderCountry": {
          "code": "ID",
          "name": "Indonesia",
          "currency": {
            "code": "IDR"
          }
          "countryIsoCode": "IDN"
        },
        "senderCurrency": {
          "code": "IDR"
        },
        "beneficiaryCountry": {
          "code": "SG",
          "name": "Singapore",
          "currency": {
            "code": "SGD"
          }
          "countryIsoCode": "SGP"
        },
        "beneficiaryCurrency": {
          "code": "IDR"
        },
        "channel": {
          "code": "09",
          "name": "Outgoing Remittance"
        },
        "forexReference": {
          "id": 491,
          "forex": {
            "origin": {
              "code": "IDR"
            },
            "destination": {
              "code": "SGD"
            }
          },
          "rate" : 9.36724265436231E-5,
          "createdTime" : 1644678804833
        },
        "fund" : {
          "origin" : {
            "amount" : 1000000.000000,
            "currency" : "IDR"
          },
          "fees": {
            "total": 15000.000000,
            "currency": "IDR",
            "components": [
              {
                "description": "Default Fee",
                "amount": 15000.000000
              }
            ],
            "additionalFee": 0.000000,
            "fixedFee": 0.000000
          },
          "destination": {
            "amount": 93.672426,
            "currency": "SGD"
          }
        },
        "transactionType": "B2C",
        "expirationDate": "Mon Jun 13 18:39:09 WIB 2022",
        "beneficiaryAccount": {
          "id": null
          "bank": {
            "id": "65232",
            "code": "CIBBSGSG",
            "name": "CIMB BANK BERHAD",
            "city": "Singapore",
            "countryCode": "SG",
            "groupBank": "null",
            "province": "Jakarta"
          },
          "number": "1001400100",
          "name": "FHILEA HERMANUS",
          "city": "Singapore,"
          "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 Optional Mandatory for channel 07 and 09
    Beneficiary bank account information
    Refer to Beneficiary Account Object section.
    beneficiaryWalletId String Optional Mandatory for channel 04
    Beneficiary Email or Beneficiary Doku Wallet ID.
    E.g: lea@doku.com (beneficiary email),
    1289006000 (beneficiary Doku wallet ID)
    transactionType String Optional Mandatory for channel 09
    B2B: Transaction is from a business to a business
    B2C: Transaction is from a business to an individual end user
    C2C: Transaction is from an individual end user to an individual end user
    C2B: Transaction is from an individual end user to a business
    beneficiaryCountry Object Mandatory The country where the beneficiary resides.
    Refer to Country Object section.
    beneficiaryCurrency Object Mandatory Beneficiary currency.
    Refer to Currency Object section.
    senderCountry Object Mandatory Sender country.
    Refer to Country Object section.
    senderCurrency Object Mandatory Sender currency.
    Refer to Currency Object section.
    senderAmount Numeric Mandatory Channel 04: Min IDR 10.000, Max IDR 10.000.000
    Channel 07: Min IDR 10.000, Max IDR 25.000.000
    Channel 09: See below
    Country Currency Min Amount Max Amount
    Singapore SGD 0 200.000

    RESPONSE BODY

    Name Type Description Example
    status Integer Response status 0
    message String Response message Transfer Inquiry Approve
    inquiry Object Refer to Inquiry Object section.

    Remit

    Remit 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"
    }'
    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"
    }'
    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": "09"
      },
      "inquiry": {
        "idToken": "I0953916988400"
      },
      "transactionType":"B2C",
      "beneficiary": {
        "country": {
          "code": "SG"
        },
        "firstName": "FHILEA",
        "lastName": "HERMANUS",
        "phoneNumber": "65200300"
      },
      "beneficiaryCity": "Singapore",
      "beneficiaryCountry": {
        "code": "SG"
      },
      "beneficiaryAccount": {
        "bank": {
          "id": "65232",
          "code": "CIBBSGSG",
          "name": "CIMB BANK BERHAD",
          "countryCode": "SG"
        },
        "city": "Singapore",
        "name": "FHILEA HERMANUS",
        "number": "1001400100"
      },
      "beneficiaryCurrency": {
        "code": "SGD"
      },
      "sender": {
        "country": {
          "code": "ID"
        },
        "firstName": "One Tech",
        "lastName": "PTE LTD",
        "phoneNumber": "628156056051",
        "birthDate": "1900-01-01",
        "personalId": "01234567890",
        "personalIdType": "Other ID",
        "personalIdCountry": {
          "code": "ID"
        }
      },
      "senderCountry": {
        "code": "ID"
      },
      "senderCurrency": {
        "code": "IDR"
      },
      "senderAmount": 1000000,
      "sendTrxId": "remit-20191007-001"
    }'

    Remit 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
      }
    }

      "status": 0, 
      "message": "Remit accepted", 
      "remit": { 
        "transactionId": "DK0857458", 
        "transactionStatus": 50 
      } 
    }
    {
      "status": 0,
      "message": "Remit accepted",
      "remit": {
        "paymentData": {
          "mallId": "90",
          "chainMallId": null,
          "accountNumber": "0097854602",
          "accountName": "ABC Corp (TEST)",
          "channelCode": "09",
          "inquiryId": "I0953916988400",
          "currency": "SGD",
          "amount": "93.672426",
          "trxCode": "80dc160c-1403-401e-ba60-f1da85767df2",
          "hostRefNumber": null,
          "issuerName": CIMB BANK BERHAD,
          "responseCode": "20000",
          "responseMsg": "CONFIRMED",
          "paymentSystrace": null,
          "transactionType": "B2C",
          "purposeOfRemittance": null,
          "documentReferenceNumber": null
        },
        "transactionId": "DK0001212",
        "transactionStatus": 20
      }
    }
    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.
    transactionType String Optional Mandatory for channel 09
    B2B: Transaction is from a business to a business
    B2C: Transaction is from a business to an individual end user
    C2C: Transaction is from an individual end user to an individual end user
    C2B: Transaction is from an individual end user to a business
    purposeOfRemittance String Optional Mandatory for channel = 09 and transactionType = B2B
    Purpose Description
    FAMILY_SUPPORT Family support
    EDUCATION Education
    GIFT_AND_DONATION Gift and other donations
    MEDICAL_TREATMENT Medical treatment
    TRAVEL Travel
    SMALL_VALUE_REMITTANCE Small value remittance
    HOTEL_ACCOMMODATION Hotel accommodation
    ADVISORY_FEES Fees for advisory or consulting service
    DELIVERY_FEES Delivery fees
    EXPORTED_GOODS Payments for exported goods
    SERVICE_CHARGES Payment for services
    LOAN_PAYMENT Payment of loans
    PROPERTY_PURCHASE Residential property purchase
    TRANSPORTATION_FEES Transportation fees
    PERSONAL_TRANSFER Personal transfer
    SALARY_PAYMENT Payment of salary
    REWARD_PAYMENT Payment of rewards
    INFLUENCER_PAYMENT Payment of Influencer
    OTHER_FEES Broker, commitment, guarantee and other fees
    OTHER Other purposes
    documentReferenceNumber String Optional Mandatory for channel 09 and transactionType = B2B.
    Reference number of document related to the transaction that can be used as underlying. E.g: invoice number, agreement number, purchase order number.
    beneficiary Object Mandatory Refer to Beneficiary Object section.
    beneficiaryCity String Mandatory The city where the beneficiary resides.
    e.g: Jakarta
    beneficiaryCountry Object Mandatory The country where the beneficiary resides. Refer to Country Object section.
    beneficiaryAccount Object Optional Mandatory for channel 07 and 09.
    Beneficiary bank account information.
    Refer to Beneficiary Account Object section.
    beneficiaryWalletId String Optional Mandatory for channel 04.
    Beneficiary Email or Beneficiary Doku Wallet ID. E.g: lea@doku.com, 1289006000
    beneficiaryCurrency Object Mandatory Beneficiary currency.
    Refer to Currency Object section.
    sender Object Mandatory Sender personal information.
    Refer to Sender Object section.
    senderCountry Object Mandatory Sender Country.
    Refer to Country Object section.
    senderCurrency Object Mandatory Sender Currency.
    Refer to Currency Object section.
    senderAmount Numeric Mandatory Channel 04: Min IDR 10.000, Max IDR 10.000.000
    Channel 07: Min IDR 10.000, Max IDR 25.000.000
    Channel 09: See below
    sendTrxId String Optional Transaction ID from merchant side. Must be unique per request.
    E.g: REF-001-001
    senderNote String Optional Note or information from sender.
    E.g: Insurance fee
    Country Currency Min Amount Max Amount
    Singapore SGD 0 200.000

    RESPONSE BODY

    Name Type Description Example
    status Integer Response status 0
    message String Response message 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.
    E.g: DK0856068 (Remit transactionId).

    RESPONSE BODY

    Name Type Description
    transaction Object Refer to Transaction Object section.
    Use transaction.status value to determine whether beneficiary receiving the funds or not. E.g: Success: 50 (see possible Transaction Status)
    status Integer Response status (E.g: Success: 0)
    message String Response message (E.g: 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. Refund notification is optional. If not implemented, partners may opted to call API transaction info to fetch the status of a transaction.

    To receive refund notifications, prepare Callback URLs for sandbox and production environment.

    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 04: DOKU Wallet Transfer
    07: Bank Transfer
    09: Outgoing Remittance

    BENEFICIARY ACCOUNT OBJECT

    Name Type Mandatory Description Example
    bank Object Mandatory Refer to Bank Object section.
    address String Optional Beneficiary account address Jl. Merdeka 45
    city String Mandatory Beneficiary account city Jakarta
    name String Mandatory Beneficiary account name John Doe
    number String Mandatory Beneficiary bank account number 6790153860

    BANK OBJECT

    Name Type Mandatory Description Example
    code String Mandatory Bank Swift code.
    See Indonesian Banks for channel 07.
    See Overseas Banks for channel 09.
    CENAIDJA
    countryCode String Mandatory Bank country code (two-letter ISO 3166-2 country code) ID
    id String Mandatory The id of the beneficiary bank.
    See Indonesian Banks for channel 07.
    See Overseas Banks for channel 09.
    014
    name String Mandatory Beneficiary bank name.
    See Indonesian Banks for channel 07.
    See Overseas Banks for channel 09.
    Bank BCA

    COUNTRY OBJECT

    Name Type Mandatory Description Example
    code String Mandatory Two-letter ISO 3166-2 country code ID

    CURRENCY OBJECT

    Name Type Mandatory Description Example
    code String Mandatory Three-letter ISO 4217 currency code IDR

    INQUIRY OBJECT

    Name Type Mandatory Description Example
    idToken String Mandatory Inquiry idToken from the last Inquiry API. I058372738354349

    BENEFICIARY OBJECT

    Name Type Mandatory Description Example
    country Object Mandatory Native country of the beneficiary.
    Refer to Country Object section.
    firstName String Mandatory Beneficiary first name. John
    lastName String Mandatory Beneficiary last name. Doe
    phoneNumber String Mandatory Beneficiary phone number. 628561223123

    SENDER OBJECT

    Name Type Mandatory Description Example
    address String Optional Mandatory for channel 09.
    Sender address.
    Jl. Paus
    country Object Mandatory Refer to Country Object section.
    firstName String Mandatory Sender first name. Mia
    lastName String Mandatory Sender last name. Smith
    phoneNumber String Mandatory Sender phone number. 62856123456
    birthDate String Mandatory Sender birth date. In YYYY-MM-DD format. 2002-12-01
    personalId String Mandatory Sender personal (national) id number. 167101110100001
    personalIdType String Mandatory Sender personal (national) id type 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 Example
    senderCurrency String Source currency code.
    Three-letter ISO 4217 currency code
    SGD
    receivingCurrency String Target (receiving) currency code.
    Three-letter ISO 4217 currency code
    IDR
    rate Decimal Exchange rate value 10783.05

    INQUIRY OBJECT

    Name Type Description Example
    idToken String Id from the last inquiry.
    Save this id to be used in Remit API.
    I058372738354349
    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.
    transactionType String Only for channel 09 response
    B2B, B2C, C2C, C2B
    B2B
    expirationDate String Only for channel 09 response
    Inquiry expiration date time.
    Sat Feb 19 23:23:16 WIB 2022
    beneficiaryAccount Object Only for channel 07 and 09 response
    Refer to Beneficiary Account Object section.
    beneficiaryWalletId String Only for channel 04 response
    Beneficiary wallet ID information.
    john@doku.com
    beneficiaryWalletName String Only for channel 04 response
    Beneficiary wallet name information.
    John Doe

    COUNTRY OBJECT

    Name Type Description Example
    code String Two-letter ISO 3166-2 country code ID
    name String Country name Indonesia
    currency Object Refer to Currency Object section.
    countryIsoCode String Only for channel 09 response
    Three-letter ISO 3166-1 alpha-3 country code
    IDN

    CURRENCY OBJECT

    Name Type Description Example
    code String Three-letter ISO 4217 currency code IDR

    CHANNEL OBJECT

    Name Type Description Example
    code String Channel code 04, 07, 09
    name String Channel name Cash To Wallet, Bank Deposit, Outgoing Remittance

    BENEFICIARY ACCOUNT OBJECT

    Name Type Description Example
    id Integer Beneficiary bank account id.
    Filled after remit is success.
    null
    bank Object Beneficiary bank information.
    Refer to Bank Object section.
    number String Beneficiary account number information. 6790153860
    name String Beneficiary account name information. John Doe
    city String Beneficiary account city information. Jakarta
    address String Beneficiary account address information. Jl. Merdeka 45

    BANK OBJECT

    Name Type Description Example
    id String Bank id information. 014
    code String Bank code information. CENAIDJA
    name String Bank name information. Bank BCA
    city String City of the bank. Jakarta
    countryCode String Bank country code information. ID
    groupBank String Group bank information Bank BCA
    province String Province of the bank Jakarta

    REMIT OBJECT

    Name Type Description
    paymentData Object Refer to Payment Data Object section.
    (Only for channel 07 and 09 response)
    transactionId String Remit transaction ID. E.g: DK0856068
    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.
    (E.g: Success: 50, refer to Possible transaction status)

    PAYMENT DATA OBJECT

    Name Type Description Example
    mallId String Id of the acquirer in Doku MTPG
    chainMallId String -
    accountNumber String Partner's VA number 0045579809
    accountName String Corporate name information. PT ABC
    channelCode String Channel code. Example: 04 or 07 or 09
    inquiryId String Inquiry idToken used in Remit API. I026241355942520
    currency String Currency information IDR
    amount String Amount sent to the beneficiary. 10000.00
    trxCode String - 3aa39914-aed3-48e8-a930-e08cb4139620
    hostRefNumber String Reference number to transfer partner
    issuerName String Issuer name Bank Central Asia
    responseCode String Response code from transfer partner 00
    responseMsg String Response message from transfer partner Transfer Approve
    paymentSystrace String -
    transactionType String Only for channel 09 response. Transaction type.
    purposeOfRemittance String Only for channel 09 response. Purpose of the remittance.
    documentReferenceNumber String Only for channel 09 response. Document reference number.

    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 Example
    id String Remit transaction ID. DK0856068
    inquiryId String Inquiry idToken from the last Inquiry API. I01429544261270
    sendTrxId String Transaction ID from merchant's side. REF-001-001
    status String Remit transaction status.
    Use this status to determine whether beneficiary receiving the funds or not.
    (Success: 50, Possible transaction status)
    50
    createdTime Timestamp Payment creation time (in epoch time format) 1569234448061
    cashInTime Timestamp Payment time YYYY-mm-DD HH:MM:SS 2019-09-23 17:27:28
    senderNote String Note or information from sender. Insurance fee
    agent Object Refer to Agent Object section
    channel Object Refer to Channel Object section
    sender Object Refer to Sender Object (Transaction Info) section
    beneficiary Object Refer to Beneficiary Object (Transaction Info) section
    fund Object Refer to Fund Object (Transaction Info) section
    transactionLog Object Refer to Transaction Log Object section

    AGENT OBJECT

    Name Type Description Example
    code String Agent's code A41418
    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 Example
    username String Agent's username john@example.com
    name String Agent's name John Operator

    SENDER OBJECT (TRANSACTION INFO)

    Name Type Description Example
    id String Sender id CID0154734
    firstName String Sender first name. John
    lastName String Sender last name. Doe
    personalIdType String Sender personal (national) id type. Example: KTP, PASSPORT KTP
    personalId String Sender personal (national) id number 01234567890
    birthDate String Sender birth date. In YYYY-MM-DD format 1900-01-01
    phoneNumber String Sender phone number 628156056051
    gender String Gender of the sender NULL
    country Object Sender country. Refer to Country Object section
    cityName String Sender city name Jakarta
    address String Sender address Jl Merdeka 45
    postalCode String Sender postal code null
    email String Sender email john@doku.com

    BENEFICIARY OBJECT (TRANSACTION INFO)

    Name Type Description Example
    id String Beneficiary id CID0154735
    firstName String Beneficiary first name John
    lastName String Beneficiary last name Doe
    personalIdType String Beneficiary personal (national) id type. Example: KTP, PASSPORT KTP
    personalId String Beneficiary personal (national) id number 0123456789
    phoneNumber String Beneficiary phone number 628156056051
    gender String Gender of the beneficiary NULL
    country Object Beneficiary country. Refer to Country Object section
    cityName String Beneficiary city name Jakarta
    address String Beneficiary address Jl Merdeka 45
    postalCode String Beneficiary postal code 12910
    email String Beneficiary email john@doku.com

    FUND OBJECT (TRANSACTION INFO)

    Name Type Description
    origin Object Source amount.
    Refer to Amount Object (Transaction Info) section
    destination Object Destination amount.
    Refer to Amount Object (Transaction Info) section
    fees Object Refer to Fees Object section

    AMOUNT OBJECT (TRANSACTION INFO)

    Name Type Description Example
    country Object Refer to Country Object section
    currency String Currency code IDR
    amount Decimal Amount of money 10000.000000

    TRANSACTION LOG OBJECT

    Name Type Description Example
    status String Remit status code 0
    statusMessage String Remit status message Processed
    referenceStatus String Response code from the bank/issuer 0000
    referenceMessage String Response message from the bank/issuer SUCCESS
    channelCode String Channel code 04, 07, or 09

    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.)
    7 IP address is not listed IP address in not allowed to do the operation
    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:
    1. Multiple transfers to the same beneficiary within last 60 seconds.
    2. Multiple transfers to the same beneficiary up to IDR 500 million/day or 50 times/day.
    3. Multiple transfers to the same beneficiary up to IDR 1 billion/month or 200 times/month.
    4. Banned customers.
    55 Timeout Internal connection timeout.
    91 Inactive Merchant is inactive.
    95 Insufficient Balance Partner last balance in DOKU is not sufficient to make a transfer.
    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 various Banks in Indonesia. Please refer to below information regarding Bank details:

    No Bank Name Id SWIFT Code
    1 BANK BRI 002 BRINIDJA
    2 BANK MANDIRI 008 BMRIIDJA
    3 BANK BNI 46 009 BNINIDJA
    4 BANK DANAMON INDONESIA 011 BDINIDJA
    5 BANK PERMATA 013 BBBAIDJA
    6 Bank BCA 014 CENAIDJA
    7 BII Maybank 016 IBBKIDJA
    8 BANK PANIN 019 PINBIDJA
    9 BANK CIMB NIAGA 022 BNIAIDJA
    10 BANK UOB BUANA INDONESIA 023 BBIJIDJA
    11 BANK OCBC NISP 028 NISPIDJA
    12 CITIBANK 031 CITIIDJX
    13 BANK CCB INDONESIA 036 BWKIIDJA
    14 BANK ARTHA GRAHA 037 ARTGIDJA
    15 MUFG BANK 042 BOTKIDJX
    16 BANK DBS INDONESIA 046 DBSBIDJA
    17 BANK STANDARD CHARTERED 050 SCBLIDJX
    18 BANK CAPITAL 054 BCIAIDJA
    19 BANK ANZ INDONESIA 061 ANZBIDJX
    20 THE BANK OF CHINA 069 BKCHIDJA
    21 BANK BUMI ARTA 076 BBAIIDJA
    22 BANK HSBC 087 HSBCIDJA
    23 BANK JTRUST INDONESIA 095 CICTIDJA
    24 BANK MAYAPADA INTERNATIONAL 097 MAYAIDJA
    25 BANK JABAR 110 PDJBIDJA
    26 BPD DKI JAKARTA 111 BDKIIDJ1
    27 BPD DIY 112 PDYKIDJ1
    28 BANK JATENG 113 PDJGIDJ1
    29 Bank Jatim 114 PDJTIDJ1
    30 BPD JAMBI 115 PDJMIDJ1
    31 BPD ACEH 116 PDACIDJ1
    32 BANK SUMUT 117 PDSUIDJ1
    33 BPD SUMATERA BARAT/BANK NAGARI 118 PDSBIDSP
    34 BPD RIAU 119 PDRIIDJ1
    35 BPD SUMSEL BABEL 120 BSSPIDSP
    36 BPD LAMPUNG 121 PDLPIDJ1
    37 BPD KALSEL 122 PDKSIDJ1
    38 BPD KALBAR 123 PDKBIDJ1
    39 BPD KALTIMTARA 124 PDKTIDJA
    40 BPD KALTENG 125 PDKGIDJ1
    41 BANK SULSELBAR 126 PDWSIDJ1
    42 BANK SULUTGO 127 PDWUIDJ1
    43 BPD NUSA TENGGARA BARAT 128 PDNBIDJ1
    44 BPD BALI 129 ABALIDBS
    45 Bank NTT 130 PDNTIDJ1
    46 BPD MALUKU 131 PDMLIDJ1
    47 BPD PAPUA 132 PDIJIDJ1
    48 BPD BENGKULU 133 PDBKIDJ1
    49 BPD SULAWESI TENGAH 134 PDWGIDJ1
    50 BPD SULAWESI TENGGARA 135 PDWRIDJ1
    51 BPD BANTEN 137 PDBBIDJ1
    52 BANK OF INDIA INDONESIA 146 BKIDIDJA
    53 BANK MUAMALAT INDONESIA 147 MUABIDJA
    54 BANK MESTIKA DHARMA 151 MEDHIDS1
    55 BANK SHINHAN INDONESIA 152 MEEKIDJ1
    56 BANK SINARMAS 153 SBJKIDJA
    57 BANK MASPION INDONESIA 157 MASDIDJ5
    58 BANK GANESHA 161 GNESIDJA
    59 BANK ICBC 164 ICBKIDJA
    60 BANK QNB KESAWAN 167 AWANIDJA
    61 Bank BTN 200 BTANIDJA
    62 BANK WOORI SAUDARA 212 BSDRIDJA
    63 Bank BTPN 213 SUNIIDJA
    64 BANK VICTORIA SYARIAH 405 SWAGIDJ1
    65 BANK JABAR BANTEN SYARIAH 425 SYJBIDJ1
    66 BANK MEGA 426 MEGAIDJA
    67 BANK KB BUKOPIN 441 BBUKIDJA
    68 BANK BSI (BANK SYARIAH INDONESIA) 451 BSMDIDJA
    69 BANK JASA JAKARTA 472 JSABIDJ1
    70 BANK KEB HANA 484 HNBNIDJA
    71 BANK MNC INTERNASIONAL 485 BUMIIDJA
    72 BANK NEO COMMERCE 490 YUDBIDJ1
    73 BANK RAYA INDONESIA 494 AGTBIDJA
    74 BANK SBI INDONESIA 498 IDMOIDJ1
    75 BANK DIGITAL BCA 501 ROYBIDJ1
    76 BANK NATIONAL NOBU 503 LFIBIDJ1
    77 BANK SYARIAH MEGA 506 BUTGIDJ1
    78 BANK INA PERDANA 513 IAPTIDJA
    79 BANK PANIN DUBAI SYARIAH 517 PNBSIDJA
    80 BANK PRIMA MASTER 520 PMASIDJ1
    81 BANK BUKOPIN SYARIAH 521 SDOBIDJ1
    82 BANK SAHABAT SAMPOERNA 523 BDIPIDJ1
    83 BANK OKE INDONESIA 526 LMANIDJ1
    84 BANK SEABANK INDONESIA 535 KSEBIDJ1
    85 BANK BCA SYARIAH 536 SYCAIDJ1
    86 BANK JAGO 542 ATOSIDJ1
    87 BANK BTPN SYARIAH 547 PUBAIDJ1
    88 BANK MULTI ARTA SENTOSA 548 MASBIDJ1
    89 BANK MAYORA 553 MAYOIDJA
    90 BANK INDEX SELINDO 555 BIDXIDJA
    91 BANK MANDIRI TASPEN POS 564 SIHBIDJ1
    92 BANK VICTORIA INTERNASIONAL 566 BVICIDJA
    93 BANK ALLO 567 HRDAIDJ1
    94 LINKAJA 911 -
    95 BANK IBK INDONESIA 945 IBKOIDJA
    96 BANK ALADIN SYARIAH 947 NETBIDJA
    97 BANK CTBC INDONESIA 949 CTCBIDJA
    98 BANK COMMONWEALTH 950 BICNIDJA
    99 OVO OVO OVO

    List of Supported Overseas Banks

    Singapore

    Please refer to below information regarding Singaporean Bank details supported by KIRIMDOKU API:

    No Bank Name Id SWIFT Code
    1 Australia and New Zealand Banking Group Limited 65228 ANZBSGSX
    2 BANK OF CHINA LIMITED 65229 BKCHSGSG
    3 BANK OF TOKYO-MITSUBISHI UFJ, LTD., THE 65230 BOTKSGSX
    4 BNP PARIBAS - SINGAPORE BRANCH 65231 BNPASGSG
    5 CIMB BANK BERHAD 65232 CIBBSGSG
    6 CITIBANK SINGAPORE LTD 65233 CITISGSL
    7 CITIBANK,N.A. 65234 CITISGSG
    8 DBS BANK LTD. 65235 DBSSSGSG
    9 DEUTSCHE BANK AG 65236 DEUTSGSG
    10 HL BANK, SINGAPORE 65237 HLBBSGSG
    11 ICICI BANK LIMITED 65238 ICICSGSG
    12 INDUSTRIAL AND COMMERCIAL BANK OF CHINA 65239 ICBKSGSG
    13 OVERSEA-CHINESE BANKING CORPORATION LIMITED 65240 OCBCSGSG
    14 RHB BANK BERHAD 65241 RHBBSGSG
    15 STANDARD CHARTERED BANK LIMITED 65242 SCBLSGSG
    16 SUMITOMO MITSUI BANKING CORPORATION 65243 SMBCSGSG
    17 UNITED OVERSEAS BANK LIMITED 65244 UOVBSGSG
    18 MALAYAN BANKING BERHAD 65245 MBBESGSG
    19 Malayan Singapore Limited 65247 MBBESGS2
    20 Mizuho Bank Limited 65248 MHCBSGSG
    21 Sing Investments & Finance Limited 65249 SIVFSGSG
    22 HSBC (Personal) 65250 HSBCSGS2
    23 HSBC (Corporate) 65251 HSBCSGSG

    List of Supported Overseas Banks

    Singapore

    Please refer to below information regarding Singaporean Bank details supported by KIRIMDOKU API:

    No Bank Name Id SWIFT Code
    1 Australia and New Zealand Banking Group Limited 65228 ANZBSGSX
    2 BANK OF CHINA LIMITED 65229 BKCHSGSG
    3 BANK OF TOKYO-MITSUBISHI UFJ, LTD., THE 65230 BOTKSGSX
    4 BNP PARIBAS - SINGAPORE BRANCH 65231 BNPASGSG
    5 CIMB BANK BERHAD 65232 CIBBSGSG
    6 CITIBANK SINGAPORE LTD 65233 CITISGSL
    7 CITIBANK,N.A. 65234 CITISGSG
    8 DBS BANK LTD. 65235 DBSSSGSG
    9 DEUTSCHE BANK AG 65236 DEUTSGSG
    10 HL BANK, SINGAPORE 65237 HLBBSGSG
    11 ICICI BANK LIMITED 65238 ICICSGSG
    12 INDUSTRIAL AND COMMERCIAL BANK OF CHINA 65239 ICBKSGSG
    13 OVERSEA-CHINESE BANKING CORPORATION LIMITED 65240 OCBCSGSG
    14 RHB BANK BERHAD 65241 RHBBSGSG
    15 STANDARD CHARTERED BANK LIMITED 65242 SCBLSGSG
    16 SUMITOMO MITSUI BANKING CORPORATION 65243 SMBCSGSG
    17 UNITED OVERSEAS BANK LIMITED 65244 UOVBSGSG
    18 MALAYAN BANKING BERHAD 65245 MBBESGSG
    19 Malayan Singapore Limited 65247 MBBESGS2
    20 Mizuho Bank Limited 65248 MHCBSGSG
    21 Sing Investments & Finance Limited 65249 SIVFSGSG
    22 HSBC (Personal) 65250 HSBCSGS2
    23 HSBC (Corporate) 65251 HSBCSGSG

    Changelog

    Document Changelog

    v3.3 Jun 10, 2022

    v3.2 Jan 5, 2022

    Oct 4, 2021

    Aug 10, 2021

    Jun 18, 2021