NAV Navbar
Logodoku
Javascript PHP XML
  • Introduction
  • Getting Started
  • KIRIMDOKU API
  • API Response
  • List of Supported Banks
  • Version
  • Introduction

    KIRIMDOKU API supports two methods of transfer processing – namely, Bank Transfer and DOKU Wallet Transfer. See below for features of each service:

    1. 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.

    2. 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:

    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

    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:

    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);
    }

    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.

    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 ID
    e.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)
    status Integer Response status (Success: 0)
    message String Response message (Success: Transaction info success)

    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

    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 Componets 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

    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.
    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
    41 Rejected 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 100 million/day or 50 times/day.
    3. Multiple transfers to the same beneficiary up to IDR 1 billion/month or 200 times/month.
    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 24 hours.
    98 Rejected Caused by beneficiary account number has been rejected in the last 24 hours.
    99 Invalid Json Invalid Json format.

    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 support transfer to over 90 Bank in Indonesia. Please refer to below information regarding Bank details:

    Bank Name Code SWIFT Code
    BANK BRI 002 BRINIDJA
    BANK MANDIRI 008 BMRIIDJA
    BANK NEGARA INDONESIA 009 BNINIDJA
    BANK DANAMON 011 BDINIDJA
    BANK PERMATA 013 BBBAIDJA
    BANK BCA 014 CENAIDJA
    BANK BII MAYBANK 016 IBBKIDJA
    BANK PANIN 019 PINBIDJA
    BANK CIMB NIAGA 022 BNIAIDJA
    BANK CIMB NIAGA SYARIAH 022 BNIAIDJA
    BANK UOB BUANA INDONESIA 023 BBIJIDJA
    BANK OCBC NISP 028 NISPIDJA
    CITIBANK 031 CITIIDJX
    BANK OF AMERICA 033 BOFAID2X
    BANK CCB INDONESIA 036 BWKIIDJA
    BANK ARTHA GRAHA 037 ARTGIDJA
    BANGKOK BANK LTD 040 BKKBIDJA
    THE BANK OF TOKYO MITSUBISHI UFJ LTD 042 BOTKIDJX
    BANK DBS INDONESIA 046 DBSBIDJA
    BANK RESONA PERDANIA 047 BPIAIDJA
    BANK MIZUHO INDONESIA 048 MHCCIDJA
    STANDARD CHARTERED BANK 050 SCBLIDJX
    BANK CAPITAL INDONESIA 054 BCIAIDJA
    BANK BNP PARIBAS 057 BNPAIDJA
    DEUTSCHE BANK 067 DEUTIDJA
    BANK WOORI INDONESIA 068 HVBKIDJA
    BANK OF CHINA LIMITED 069 BKCHIDJA
    BANK BUMI ARTA 076 BBAIIDJA
    BANK HSBC INDONESIA 087 HSBCIDJA
    BANK ANTARDAERAH 088 ANTDIDJD
    BANK RABOBANK 089 RABOIDJA
    BANK MUTIARA 095 CICTIDJA
    BANK MAYAPADA INTERNATIONAL 097 MAYAIDJA
    BANK BJB 110 PDJBIDJA
    BANK DKI 111 BDKIIDJ1
    BPD DIY 112 PDYKIDJ1
    BPD JAWA TENGAH 113 PDJGIDJ1
    BANK JATIM 114 PDJTIDJ1
    BPD JAMBI 115 PDJMIDJ1
    BPD ACEH 116 PDACIDJ1
    BPD SUMATERA UTARA 117 PDSUIDJ1
    BPD SUMATERA BARAT/BANK NAGARI 118 PDSBIDSP
    BPD RIAU 119 PDRIIDJ1
    BPD SUMATERA SELATAN 120 BSSPIDSP
    BPD LAMPUNG 121 PDLPIDJ1
    BPD KALSEL 122 PDKSIDJ1
    BPD KALIMANTAN BARAT 123 PDKBIDJ1
    BPD KALTIM 124 PDKTIDJA
    BPD KALTENG 125 PDKGIDJ1
    BPD SULSEL 126 PDWSIDJ1
    BANK SULUTGO 127 PDWUIDJ1
    BPD NTB 128 PDNBIDJ1
    BPD BALI 129 PDBAIDJ1
    BANK NTT 130 PDNTIDJ1
    BANK MALUKU 131 PDMLIDJ1
    BPD PAPUA 132 PDIJIDJ1
    BPD BENGKULU 133 PDBKIDJ1
    BPD SULAWESI TENGAH 134 PDWGIDJ1
    BPD SULAWESI TENGGARA 135 PDWRIDJ1
    BANK BNP (BANK NUSANTARA PARAHYANGAN) 145 NUPAIDJ6
    BANK OF INDIA INDONESIA 146 BKIDIDJA
    BANK MUAMALAT 147 MUABIDJA
    BANK MESTIKA DHARMA 151 MEDHIDS1
    BANK METRO EXPRESS/BANK SHINHAN INDONESIA 152 MEEKIDJ1
    BANK SINARMAS 153 SBJKIDJA
    BANK MASPION INDONESIA 157 MASDIDJ5
    BANK GANESHA 161 GNESIDJA
    BANK ICBC 164 ICBKIDJA
    BANK QNB KESAWAN 167 AWANIDJA
    BANK TABUNGAN NEGARA (BTN) 200 BTANIDJA
    BANK SAUDARA (BANK WOORI SAUDARA) 212 BSDRIDJA
    BANK TABUNGAN PENSIUNAN NASIONAL (BTPN) 213 SUNIIDJA
    BANK VICTORIA SYARIAH 405 SWAGIDJ1
    BSI-BRIS (BANK BRI SYARIAH) 422 DJARIDJ1
    BANK BJB SYARIAH 425 SYJBIDJ1
    BANK MEGA 426 MEGAIDJA
    BSI-BNIS (BANK BNI SYARIAH) 427 SYNIIDJ1
    BANK KB BUKOPIN 441 BBUKIDJA
    BANK SYARIAH INDONESIA 451 SYMDIDJ1
    BANK JASA JAKARTA 472 JSABIDJ1
    BANK HANA 484 HNBNIDJA
    BANK MNC INTERNASIONAL 485 BUMIIDJA
    BANK NEO COMMERCE 490 YUDBIDJ1
    BANK MITRA NIAGA 491 MGABIDJ1
    BANK AGRO NIAGA 494 AGTBIDJA
    BANK SBI INDONESIA 498 IDMOIDJ1
    BANK BCA DIGITAL 501 ROYBIDJ1
    BANK NATIONAL NOBU 503 LFIBIDJ1
    BANK SYARIAH MEGA 506 BUTGIDJ1
    BANK INA PERDANA 513 INPBIDJ1
    BANK PANIN SYARIAH 517 BDABCDJA
    BANK PRIMA MASTER 520 PMASIDJ1
    BANK BUKOPIN SYARIAH 521 SDOBIDJ1
    BANK SAHABAT SAMPOERNA 523 BDIPIDJ1
    BANK OK INDONESIA 526 LMANIDJ1
    BANK SEABANK INDONESIA 535 KSEBIDJ1
    BANK BCA SYARIAH 536 SYCAIDJ1
    BANK JAGO 542 ATOSIDJ1
    BANK BTPN SYARIAH 547 PUBAIDJ1
    BANK MULTI ARTA SENTOSA 548 MASBIDJ1
    BANK MAYORA 553 MAYOIDJA
    BANK INDEX SELINDO 555 BIDXIDJA
    BPD BANTEN 558 EKSTIDJ1
    BANK MANDIRI TASPEN POS 564 SIHBIDJ1
    BANK VICTORIA INTERNASIONAL 566 BVICIDJA
    BPR/LSB 600 -
    BPR KS 688 -
    BPR EKA 699 -
    LINKAJA 911 -
    BANK AGRIS 945 AGSSIDJA
    BANK CHINA TRUST INDONESIA 949 CTCBIDJA
    BANK COMMONWEALTH 950 BICNIDJA

    Version

    Document version 3.2