NAV
HTTP cURL
  • Home
  • Introduction

    Overview of BCA Sandbox APIs:

    Method Endpoint Usage
    POST /api/oauth/token Get Access Token for Oauth2.0
    GET /banking/v3/corporates/{CorporateID} /accounts/{AccountNumber1},{AccountNumber2},…,{AccountNumber20} Get your account(s) balance
    GET /banking/v3/corporates/{CorporateID} /accounts/{AccountNumber}/statements Get your account statement
    POST /banking/corporates/transfers Fund Transfer to another BCA account
    POST /banking/corporates/transfers/domestic Fund Transfer to domestic Bank account
    POST /sakuku-commerce/payments Create payment for Sakuku
    GET /sakuku-commerce/payments /{MerchantID}/{PaymentID} Get Status of Sakuku Transaction
    GET /general/rate/forex Foreign Exchange Rate Information
    GET /general/info-bca/branch BCA Branch Location
    POST /fire/accounts/balance Get balance information
    POST /fire/accounts Get beneficiary account’s information
    POST /fire/transactions Get status of a transaction
    POST /fire/transactions/to-account Transfer funds directly to beneficiary account
    POST /fire/transactions/cash-transfer Transfer funds to beneficiary to be taken personally
    PUT /fire/transactions/cash-transfer/amend Amend cash transfer transaction’s detail
    POST /fire/transactions/cash-transfer/cancel Cancel cash transfer transaction
    POST /va/payments?CompanyCode=&RequestID= OR
    /va/payments?CompanyCode=&CustomerNumber=
    Get status of payment by CompanyCode and CustomerNumber or RequestID

    Authentication

    OAuth2.0

    BCA APIs is using OAuth 2.0 as the authorization framework. To get the access token, you need to be authorized by client_id and client_secret. To learn more about the OAuth 2.0 authorization framework, you can read the RFC6749 Documentation.

    Access Token

    access_token is an opaque string token that identify the user of the API. This token is required each time an application call API. There are several way to obtain an access_token, which will be described bellow.

    Obtaining Access Token

    Access token can be obtained in many way, depend on the grant_type of the application. To access all the services in this sandbox, you will need the access token with grant_type = client_credentials.

    Client Credentials Grant

    Access Token

    POST /api/oauth/token

    POST /api/oauth/token HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Basic Base64(client_id:client_secret)
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials
    
    curl https://sandbox.bca.co.id/api/oauth/token \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -H "Authorization: Basic jk5ZTkyYzgtYzAzNC00YmNhLWE0OTAtYWM4NGI0YTZiMjQxOjNmYWIwNGI1LWM4ODctNGZmMi05OGNkLTE1YjJmYTcyNzA1NA==" \
      -d "grant_type=client_credentials"
    

    Response:

    {
    "access_token":"2YotnFZFEjr1zCsicMWpAA",
    "token_type":"Bearer",
    "expires_in":3600,
    "scope":"resource.WRITE resource.READ"
    }
    

    client_credentials grant will provide application access to API without requiring any user credential. Any call requested using access_token obtained using this method are made on behalf of the application instead of the user.

    This grant type is designed to be used by server to server call. In order to obtain access_token a request must be made with following specification

    Request

    Setting Value
    HTTP Method POST
    Path /api/oauth/token
    Host sandbox.bca.co.id

    Request Headers

    Name Format Mandatory Description
    Authorization Basic base64(client_id:client_secret) Yes
    Content-Type application/x-www-form-urlencoded Yes

    Payload

    Field Data Type Mandatory Description
    grant_type String Yes value = client_credentials

    Result of the request will contains following information:

    Response

    Field Data Type Description
    access_token String your access_token
    token_type String default is Bearer
    expires_in String access_token validity, in seconds
    scope String application scope/permission granted to application

    Signature

    Signature is used by BCA to verify that your request is not altered by attackers.

    The outline of the HMAC validation process is as follows:

    1. Retrieve Timestamp from HTTP Header (X-BCA-Timestamp)
    2. Retrieve the API Key form HTTP Header (X-BCA-Key)
    3. Lookup the API Secret corresponding to the received key in internal store
    4. Retrieve client HMAC from HTTP Header lowercase hexadecimal format (X-BCA-Signature)
    5. Calculate HMAC using the API Secret as the HMAC secret key
    6. Compare client HMAC with calculated HMAC

    If HMAC hash comparison is invalid API Gateway will return a HTTP 400 error code with "HMAC Mismatch" message.

    Signature mismatch error

    {
        "ErrorCode" : "...",
        "ErrorMessage" : {
            "Indonesian": "HMAC tidak cocok",
            "English": "HMAC mismatch"
        }
    }
    
    

    Generate Signature

    SHA-256 HMAC is used to generate the signature with your API secret as the key.

    Signature = HMAC-SHA256(apiSecret, StringToSign)

    The StringToSign will be a colon-separated list derived from some request data as below:

    StringToSign = HTTPMethod+":"+RelativeUrl+":"+AccessToken+":"+Lowercase(HexEncode(SHA-256(RequestBody)))+":"+Timestamp

    POST Example:

    Data :
      - Method : POST
      - Relative URL : /banking/corporates/transfers
      - Access token : lIWOt2p29grUo59bedBUrBY3pnzqQX544LzYPohcGHOuwn8AUEdUKS
      - Request body :
        { 
        "CorporateID" : "BCAAPI2016",
            "SourceAccountNumber" : "0201245680",
            "TransactionID" : "00000001",
            "TransactionDate" : "2016-01-30",
            "ReferenceID" : "12345/PO/2016",
            "CurrencyCode" : "IDR",
            "Amount" : "100000.00",
            "BeneficiaryAccountNumber" : "0201245681",
            "Remark1" : "Transfer Test",
            "Remark2" : "Online Transfer"
        }
      - Timestamp : 2016-02-03T10:00:00.000+07:00
    
    API Secret : 22a2d25e-765d-41e1-8d29-da68dcb5698b
    
    Lowercase(HexEncode(SHA-256(RequestBody))) : e3cf5797ac4ac02f7dad89ed2c5f5615c9884b2d802a504e4aebb76f45b8bdfb
    
    StringToSign : POST:/banking/corporates/transfers:lIWOt2p29grUo59bedBUrBY3pnzqQX544LzYPohcGHOuwn8AUEdUKS:e3cf5797ac4ac02f7dad89ed2c5f5615c9884b2d802a504e4aebb76f45b8bdfb:2016-02-03T10:00:00.000+07:00
    
    Signature : 69ad66589ade078a30922a0848725cf153aecfcca82eba94e3270285b4a9c604
    
    

    For GET request (with no RequestBody), you still need to calculate SHA-256 of an empty string.

    GET Example:

    Data:
      - Method : GET
      - Relative URL : /banking/v3/corporates/BCAAPI2016/accounts/0201245680/statements?StartDate=2016-09-01&EndDate=2016-09-01
      - Access token : lIWOt2p29grUo59bedBUrBY3pnzqQX544LzYPohcGHOuwn8AUEdUKS
      - Request body : 
      - Timestamp : 2016-02-03T10:00:00.000+07:00
    
    API Secret : 22a2d25e-765d-41e1-8d29-da68dcb5698b
    
    Lowercase(HexEncode(SHA-256(RequestBody))) : e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    
    StringToSign : GET:/banking/v2/corporates/BCAAPI2016/accounts/0201245680/statements?EndDate=2016-09-01&StartDate=2016-09-01:lIWOt2p29grUo59bedBUrBY3pnzqQX544LzYPohcGHOuwn8AUEdUKS:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855:2016-02-03T10:00:00.000+07:00
    
    Signature : 3ac124303746d222387d4398dddf33201a384aa22137aa08f4d9843c6f467a48
    
    

    Details about the data used to derived The StringToSign is explained in the next sections.

    HTTP Method

    Relative URL

    Full URL Relative URL
    https://example.com/api/v2/sample?param1=value1&param2=value2 /api/v2/sample?param1=value1&param2=value2
    https://example.com or https://example.com/ /
    1. Do not URI-encode forward slash ( / ) if it was used as path component.
    2. Do not URI-encode question mark ( ? ), equals sign ( = ), and ampersand ( & ) if they were used as query string component: as separator between the path and query string, between query parameter and its value, and between each query parameter and value pairs.
    3. Do not URI-encode these characters: A-Z, a-z, 0-9, hyphen ( - ), underscore ( _ ), period ( . ), and tilde ( ~ ) which are defined as unreserved characters in RFC 3986.
    4. Percent-encode all other characters not meeting the above conditions using the format: %XY, where X and Y are hexadecimal characters (0-9 and uppercase A-F). For example, the space character must be encoded as %20 (not using ’+’, as some encoding schemes do) and extended UTF-8 characters must be in the form %XY%ZA%BC.
    1. Sorted by parameter name lexicographically
    2. If there are two or more parameters with the same name, sort them by parameter values. Example :
    Relative URL Sorted Relative URL
    /api/v2/sample?A-param=value1&Z-param=value2&B-param=value3 /api/v2/sample?A-param=value1&B-param=value3&Z-param=value2

    AccessToken

    RequestBody

    Canonicalization Example.

    {
        "Test1" : "str Val",
        "Test2" : 1
     }
    

    After canonicalized, the above JSON will become the following.

    {"Test1":"strVal","Test2":1}
    

    Timestamp

    The timestamp must be presented in ISO8601 format (yyyy-MM-ddTHH:mm:ss.SSSTZD)

    Format Description
    yyyy four-digit year
    MM two-digit month (01=January, etc.)
    dd two-digit day of month (01 through 31)
    T literal ’T’ as date and time separator
    HH two digits of hour (00 through 23) (am/pm NOT allowed)
    mm two digits of minute (00 through 59)
    ss two digits of second (00 through 59)
    SSS three digits representing millisecond (000 through 999)
    TZD time zone designator (+hh:mm or -hh:mm)

    Headers

    To successfully communicate with BCA Banking API, you must provide the following headers in every API request:

    Sample request with complete headers:

    GET /general/rate/forex HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer a0daAPsGwPDHGMv6MpWzoIPgZvN9YvrSi7xdVI7Jb98638ilM7ila7
    Content-Type: application/json
    Origin: yourdomain.com
    X-BCA-Key: 41138489-1057-4e7e-ab93-9bc97b511cf6 
    X-BCA-Timestamp:  2016-02-03T10:00:00.000+07:00
    X-BCA-Signature: ce20470484c27c0441d7c9dedc7d3e187e5e908df1780c6c389941b779033519
    
    curl "https://sandbox.bca.co.id/general/rate/forex" \
      -H "Authorization: Bearer a0daAPsGwPDHGMv6MpWzoIPgZvN9YvrSi7xdVI7Jb98638ilM7ila7"\
      -H "Content-Type: application/json"\
      -H "Origin: yourdomain.com"\
      -H "X-BCA-Key: 41138489-1057-4e7e-ab93-9bc97b511cf6"\
      -H "X-BCA-Timestamp: 2016-02-03T10:00:00.000+07:00"\
      -H "X-BCA-Signature: ce20470484c27c0441d7c9dedc7d3e187e5e908df1780c6c389941b779033519"
    
    Name Type Description
    Authorization Alphanumeric OAuth2.0 Token Format value: Bearer {access_token}
    Content-Type Alphanumeric Content of your request body e.g. application/json
    Origin url Origin domain e.g. yourdomain.com
    X-BCA-Key Alphanumeric Your API Key generated by BCA
    X-BCA-Timestamp yyyy-MM-ddTHH:mm:ss.SSSTZD (ISO 8601) Timestamp generated by merchant in ISO 8601 e.g. “2016-02-03T10:00:00.000+07:00”
    X-BCA-Signature Alphanumeric Signature, please refer to section above

    API Services

    Business Banking

    1. Balance Information

    GET banking/v3/corporates/{CorporateID}/accounts/{AccountNumber}

    Request:

    GET /banking/v3/corporates/BCAAPI2016/accounts/0201245680,0063001004,1111111111 HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    curl "https://sandbox.bca.co.id/banking/v3/corporates/BCAAPI2016/accounts/0201245680,0063001004,1111111111" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"
    

    Response:

    {           
       "AccountDetailDataSuccess":
       [            
          {         
             "AccountNumber": "0201245680",         
             "Currency": "IDR",         
             "Balance": "118849999.53",         
             "AvailableBalance": "118849999.53",            
             "FloatAmount": "0.00",         
             "HoldAmount": "0.00",          
             "Plafon": "0.00"           
          },            
          {         
             "AccountNumber": "0063001004",         
             "Currency": "IDR",         
             "Balance": "69942987.27",          
             "AvailableBalance": "69942987.27",         
             "FloatAmount": "0.00",         
             "HoldAmount": "0.00",          
             "Plafon": "0.00"           
          },            
       ],           
       "AccountDetailDataFailed":    
       [            
          {         
             "English": "Invalid AccountNumber",            
             "Indonesian": "AccountNumber Tidak Valid",         
             "AccountNumber": "1111111111"          
          }
       ]
    }       
    

    Get your KlikBCA Bisnis account balance information with maximum of 20 accounts in a request. Your Request must contain following information:

    Request

    Field Data Type Mandatory Description
    CorporateID String(10) Y Your KlikBCA Bisnis Corporate ID
    AccountNumber String(10) Y Account(s) Number

    Response

    Field Data Type Description
    AccountDetail Data Success
    AccountNumber String(10) Account Number
    Currency String(3) Currency of the account (IDR, USD, etc)
    Balance String(16) Balance of the account
    AvailableBalance String(16) Available balance to be used. Format: Number, 13.2
    FloatAmount String(16) Amount of deposit that is not effective yet (due to holiday, etc). Format: Number, 13.2
    HoldAmount String(16) Hold amount that cannot be used. Format: Number, 13.2
    Plafon String(16) Credit limit of the account. Format: Number, 13.2
    AccountDetailDataFailed
    English String(100) Error message in English
    Indonesian String(100) Error message in Bahasa Indonesia
    AccountNumber String(10) Account Number










    2. Account Statement

    GET banking/v3/corporates/{CorporateID}/accounts/{AccountNumber}
    /statements?StartDate=yyyy-MM-dd&EndDate=yyyy-MM-dd

    Request:

    GET /banking/v3/corporates/BCAAPI2016/accounts/0201245680/statements?StartDate=2016-09-01&EndDate=2016-09-01 HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    curl "https://sandbox.bca.co.id/banking/v3/corporates/BCAAPI2016/accounts/0201245680/statements?StartDate=2016-09-01&EndDate=2016-09-01" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"
    

    Response:

    {
      "StartDate": "2016-09-01",
      "EndDate"   : "2016-09-01",
      "Currency" : "IDR",
      "StartBalance" : "94163880.00",
      "Data": [
           {
               "TransactionDate":"PEND",
               "BranchCode":"0000",
               "TransactionType":"D",
               "TransactionAmount":"100000.00",
               "TransactionName":"TRSF E-BANKING DB",
               "Trailer":"0109/FTSCY/WS95051 100000.00 Online Transfer   PT DUMMY2"
            },
            {
               "TransactionDate":"PEND",
               "BranchCode":"0061",
               "TransactionType":"C",
               "TransactionAmount":"3000000.00",
               "TransactionName":"NK - LLG",
               "Trailer":""
            },
            {
               "TransactionDate":"PEND",
               "BranchCode":"0000",
               "TransactionType":"D",
               "TransactionAmount":"250000.00",
               "TransactionName":"TRSF E-BANKING DB",
               "Trailer":"0109/FTSCY/WS95051 250800.00 Transfer DUMMY1"
            },
           {
               "TransactionDate":"PEND",
               "BranchCode":"0000",
               "TransactionType":"D",
               "TransactionAmount":"100000.00", 
               "TransactionName":"BA JASA E-BANKING",
               "Trailer":"0109/TRCHG/WS95051BIAYA TRANSFER SME"
            },
           {
               "TransactionDate":"PEND",
               "BranchCode":"0101",
               "TransactionType":"C",
               "TransactionAmount":"10000.00",
               "TransactionName":"KR OTOMATIS",
               "Trailer":"DUMMY7  039903811112"},
           {
              "TransactionDate":"PEND",
              "BranchCode":"0038",
              "TransactionType":"D",
              "TransactionAmount":"100000.00",
              "TransactionName":"TARIKAN TUNAI",
              "Trailer":""
             }
         ]
    }
    
    

    Get your KlikBCA Bisnis account statement for a period up to 31 days.

    Your Request must contain following information:

    Request

    Field Data Type Mandatory Description
    CorporateID String(10) Y Your KlikBCA Bisnis CorporateID
    AccountNumber String(10) Y Account Number
    StartDate String(10) Y Start Date of the account statement that you wants to get. Format: yyyy-MM-dd
    EndDate String(10) Y End Date of the account statement that you wants to get. Format: yyyy-MM-dd

    Result of the request will contains following information:

    Response

    Field Data Type Description
    Currency String(3) Currency of the account (IDR, USD, etc)
    StartBalance String(16) Balance of the account at the start date. Format: Number, 13.2
    StartDate String(10) Start Date of the account statement that you wants to get. Format: yyyy-MM-dd
    EndDate String(10) End Date of the account statement that you wants to get. Format: yyyy-MM-dd. If the end date is not a working day, then end date will changed automatically to the next working day.
    Data
    TransactionDate String(5) Date of Transaction: (“dd/MM”): the date of transaction done “PEND”: Pending transaction
    BranchCode String(4) Branch code of the transaction
    TransactionType String(1) Type of transaction: “D”: Debit “K”: Kredit (Credit)
    TransactionAmount String(16) Amount of transaction. Format: Number, 13.2
    TransactionName String(32) Name of Transaction
    Trailer String(128) The Description of transaction





    3. Fund Transfer

    POST /banking/corporates/transfers

    Request:

    POST /banking/corporates/transfers HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    {
        "CorporateID" : "BCAAPI2016",
        "SourceAccountNumber" : "0201245680",
        "TransactionID" : "00000001",
        "TransactionDate" : "2016-01-30",
        "ReferenceID" : "12345/PO/2016",
        "CurrencyCode" : "IDR",
        "Amount" : "100000.00",
        "BeneficiaryAccountNumber" : "0201245681",
        "Remark1" : "Transfer Test",
        "Remark2" : "Online Transfer"
    }
    
    
    curl "https://sandbox.bca.co.id/banking/corporates/transfers" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    -d '{"CorporateID": "BCAAPI2016", "SourceAccountNumber: "0201245680","TransactionID": "00000001", "TransactionDate":"2016-01-30","ReferenceID" : "12345/PO/2016","CurrencyCode" :"IDR", "Amount" : "100000.00", "BeneficiaryAccountNumber" : "0201245681", "Remark1" : "Transfer Test", "Remark2" : "Online Tr-
    ansfer"
    

    Response:

    {
        "TransactionID" : "00000001",
        "TransactionDate" : "2016-01-30",
        "ReferenceID" : "12345/PO/2016",
        "Status" : "Success"
    }
    

    You can send fund transfer instructions to BCA using this service. The source of fund transfer must be from your corporate’s own deposit account. The recipient may be any deposit account within BCA. Your Request must contain following information:

    Payload

    Field Data Type Mandatory Description
    CorporateID String(10) Y Your KlikBCA Bisnis CorporateID
    SourceAccountNumber String(10) Y Source of Fund Account Number
    TransactionID String(8) Y Transcation ID unique per day (using UTC+07 Time Zone). Format: Number
    TransactionDate String(10) Y Transaction date. Format: yyyy-MM-dd
    ReferenceID String(30) Y Sender’s transaction reference ID
    CurrencyCode String(3) Y Currency Code (For now support IDR)
    Amount String(16) Y Transfer amount. Format: Number, 13.2
    BeneficiaryAccountNumber String(10) Y BCA Account number to be credited (Destination)
    Remark1 String(18) N Transfer remark for receiver
    Remark2 String(18) N Transfer remark for receiver

    Result of the request will contains following information:

    Response

    Field Data Type Description
    TransactionID String(8) Transaction ID unique per day. (Using UTC+07 Time Zone). Format: Number
    TransactionDate String(10) Transcation date. Format: yyyy-MM-dd
    ReferenceID String(30) Sender’s transaction reference ID
    Status String(20) Transfer Status: “Success”





    4. Domestic Fund Transfer

    POST /banking/corporates/transfers/domestic

    Request:

    POST /banking/corporates/transfers/domestic HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    ChannelID: [channelID]
    CredentialID: [credentialID]
    
    {
        "TransactionID" : "00000001",
        "TransactionDate" : "2016-01-30",
        "ReferenceID"" : "12345/PO/2016",
        "SourceAccountNumber" : "0201245680",
        "BeneficiaryAccountNumber" : "0201245681",
        "BeneficiaryBankCode" : "BRINIDJA",",
        "BeneficiaryName" : "Tester",
        "Amount" : "100000.00",
        "TransferType" : "LLG",
        "BeneficiaryCustType" : "1",",
        "BeneficiaryCustResidence" : "1",",
        "CurrencyCode" : "IDR",
        "Remark1" : "Transfer Test",
        "Remark2" : "Online Transfer"
    }
    
    
    curl "https://sandbox.bca.co.id/banking/corporates/transfers/domestic" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
      -H "ChannelID: [channelID]"\
      -H "CredentialID: [credentialID]"\
    -d '{"TransactionID": "00000001", "TransactionDate":"2016-01-30","ReferenceID" : "12345/PO/2016","SourceAccountNumber: "0201245680","BeneficiaryAccountNumber" : "0201245681","BeneficiaryBankCode" : "BRINIDJA","BeneficiaryName" : "Tester", "Amount" : "100000.00","TransferType" :"LLG","BeneficiaryCustType" :"1","BeneficiaryCustResidence" :"1","CurrencyCode" :"IDR",  "Remark1" : "Transfer Test", "Remark2" : "Online Transfer"}
    

    Response:

    {
        "TransactionID" : "00000001",
        "TransactionDate" : "2016-01-30",
        "ReferenceID" : "12345/PO/2016",
        "PPUNumber"" : "(DAC8"
    }
    

    You can send fund transfer instructions to BCA using this service. The source of fund transfer must be from your corporate's own deposit account. The recipient may be any deposit account within domestic bank except BCA. Your Request must contain following information:

    Headers

    Field Data Type Mandatory Description
    ChannelID String(5) Y Channel Identification Number (Ex: 95051 for KlikBCA Bisnis)
    CredentialID String(10) Y Your Channel Identity (ex: Your KlikBCA Bisnis CorporateID)

    Payload

    Field Data Type Mandatory Description
    TransactionID String(8) Y Transaction ID unique per 90 days (using UTC+07 Time Zone). Format: Number and must be 8 digits
    TransactionDate String(10) Y Transaction date. Format: yyyy-MM-dd
    ReferenceID String(30) Y Sender’s transaction reference ID
    SourceAccountNumber String(10) Y Source of Fund Account Number
    BeneficiaryAccountNumber String(34) Y Account number to be credited (Destination)
    BeneficiaryBankCode String(8) Y Bank Code of account to be credited (destination)
    BeneficiaryName String(70) Y Account name to be credited (destination)
    Amount String(16) Y Transfer amount. Format: Number, 13.2
    TransferType String(3) Y LLG or RTG
    BeneficiaryCustType String(1) Y 1 = Personal 2 = Corporate 3 = Government
    BeneficiaryCustResidence String(1) Y 1 = Resident 2 = Non Resident
    CurrencyCode String(3) Y Currency Code (For now support IDR)
    Remark1 String(18) N Transfer remark for receiver
    Remark2 String(18) N Transfer remark for receiver

    Result of the request will contains following information:

    Response

    Field Data Type Description
    TransactionID String(8) Transaction ID unique per 90 days. (Using UTC+07 Time Zone). Format: Number
    TransactionDate String(10) Transcation date. Format: yyyy-MM-dd
    ReferenceID String(30) Sender’s transaction reference ID
    PPUNumber String(5) Number that will be generated by BCA

    Sakuku

    1. Create Payment

    POST /sakuku-commerce/payments

    Request:

    POST /sakuku-commerce/payments HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer 45cfc1b6-9483-4265-bbb4-e4f8027cb4ce
    Content-Type: application/json
    Origin: Example.com
    X-BCA-Key: bd818a9b-b5ba-44ed-8fd4-dfe378ac6db5
    X-BCA-Timestamp: 2015-04-29T09:54:00.234+07:00
    X-BCA-Signature: bd818a9bb5ba44ed8fd4dfe378ac6db5
    
    {
         "MerchantID":"89000",
         "MerchantName":"Merchant One",
         "Amount":"100.22",
         "Tax":"0.0",  
         "TransactionID":"156479",  
         "CurrencyCode":"IDR",         
         "RequestDate":"2015-04-29T09:54:00.234+07:00",
         "ReferenceID":"123465798"   
    }
    
    curl "https://sandbox.bca.co.id/payments" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    -d '{"MerchantID":"89000", "MerchantName":"Merchant One",
    "Amount":"100.22", "Tax":"0.0", "TransactionID":"156479",  
    "CurrencyCode":"IDR", "RequestDate":"2015-04-29T09:54:0-
    0.234+07:00", "ReferenceID":"123465798"}' 
    

    Response:

    {
          "TransactionID": "156479",
          "PaymentID": "14486EA88D493A92E0540021281A5568",
          "LandingPageURL": " https://sandbox.bca.co.id/
        login?PaymentID=14486EA88D493A92E0540021281A5568"
    }
    

    This service used by merchant to sent transaction data, and in return merchant will get PaymentID. Your Request must contain following information:

    Request

    Field Data Type Mandatory Description
    MerchantID String(5) Y Merchant ID
    MerchantName String(16) Y Merchant Name
    TransactionID String(18) Y Transaction Number generated by merchant
    ReferenceID String(40) Y Reference ID generated by merchant
    RequestDate String(24) Y Transaction Date generated by merchant. Format: yyyy-MM-ddTHH:mm:ss.SSSTZD (ISO 8601)
    Amount String(16) Y Amount of transaction
    Tax String(16) N Tax of transaction
    CurrencyCode String(3) Y Currency is on IDR
    Description String(100) N Description of transcation
    CallbackURL String(200) N User will be auto redirected to this URL’s merchant after finish the payment

    Result of the request will contains following information:

    Response

    Field Data Type Description
    TransactionID String(18) Transaction number generated by merchant
    PaymentID String(40) Payment ID is generated by BCA
    LandingPageURL String(200) URL for merchant to redirect user to Sakuku Commerce

    After merchant get LandingPageURL, merchant should redirect user to that url.
    Sample Code in UAT:
    https://sandbox.bca.co.id/login?PaymentID=14486EA88D493A92E0540021281A5568

    2. Payment Status

    Request:
    GET /sakuku-commerce/payments/{MerchantID}/{PaymentID}

    Request:

    GET /sakuku-commerce/payments/89000/0FE117D539DF610FE0540021281A5568 HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
      curl "https://sandbox.bca.co.id/sakuku-commerce/payments/89000/14486EA88D493A92E0540021281A5568" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"
    

    Response:

    {
    "PaymentID": "0FE117D539DF610FE0540021281A5568",
    "Amount": "10000.00",
    "RequestDate": "2015-02-25T16:39:19.234+07:00",
    "PaymentStatus": "11",
    "ReasonStatus": {
        "Indonesian": "Transaksi sedang dalam proses",
        "English": "Transaction on process"
      }
    }
    

    This service provided for merchant to get status of payment transaction. Your Request must contain following information:

    Request

    Field Data Type Description
    MerchantID String(5) MerchantID is generated by BCA(numeric)
    PaymentID String(40) PaymentID is generated by BCA

    Your Request will contain following RESPONSE information:

    Response

    Field DataType Description
    PaymentID String(40) PaymentID of transaction
    Amount String(16) Amount of transaction
    RequestDate String(24) Date of transaction. Format: yyyy-MM-ddTHH:mm:ss.SSSTZD (ISO 8601)
    PaymentStatus String(2) 00: Success, 01: Failed, 11: On Process
    ReasonStatus
    Indonesian String(500) Reason status in Indonesian
    English String(500) Reason status in English

    General Information

    GET /general/rate/forex

    Request:

    GET /general/rate/forex?CurrencyCode=USD,JPY,XXX&RateType=erate,tt,yy HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    curl "https://sandbox.bca.co.id/general/rate/forex?CurrencyCode=USD,JPY,XXX&RateType=erate,tt,yy" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"
    

    Response:

    {
      "Currencies": [{
    	"CurrencyCode": "USD",
    	"RateDetail": [{
    		"RateType": "erate"
    		"Buy": 17500.00,
    		"Sell": 17000.00,
    		"LastUpdate": "2015-09-04T19:45:44.234+07:00",
    		},
    		{
    		"RateType": "tt"
    		"Buy": 12000.00,
    		"Sell": 12300.00,
    		"LastUpdate": "2015-09-04T19:45:44.234+07:00",
    		}]
    	},
    	{
    	"CurrencyCode": "JPY",
    	"RateDetail": [{
    		"RateType": "erate"
    		"Buy": 121.00,
    		"Sell": 122.00,
    		"LastUpdate": "2015-09-04T19:45:44.234+07:00",
    		},
    		{
    		"RateType": "tt"
    		"Buy": -,
    		"Sell": -,
    		"LastUpdate": "-",
    		}]
    	}],
      "InvalidRateType":"yy"
      "InvalidCurrency":"XXX"
    }
    

    1. Foreign Exchange Rate

    Get information about Foreign Currency Exchange Rate for applicable currencies in BCA. The exchange rate are divide into four types eRate (Electronic Rate), TT (Telegrafic Transfer), TC (Travellers Cheque) and BN (Bank Notes).

    Query string parameters:

    Field DataType Mandatory Description
    CurrencyCode String N Known currency code. For multiple currencies use comma separated.

    Following are the known foreign currency in BCA.

    AUD - Australia Dollar
    BND - Bruneian Dollar
    CAD - Canadian Dollar
    CHF - Francs
    CNY - China Yuan
    DKK - Danish Krone
    EUR - Euro
    GBP - Great Britain Poundsterling
    HKD - Hongkong Dollar
    JPY - Japan Yen
    KRW - Korea Won
    NOK - Norwegian Krone
    NZD - New Zealand Dollar
    PHP - Phillipine Peso
    SAR - Saudi Riyal
    SEK - Swedish Krona
    SGD - Singapore Dollar
    THB - Thailand Baht
    TWD - Taiwan Dollar
    USD - US Dollar


    If the field was left empty, it will considered as “all know currencies”.
    RateType String Y The type for the desired rate.
    eRate (electronic Rate)
    TT (Telegrafic Transfer)
    TC (Travellers Cheque)
    BN (Bank Notes)


    If the field was left empty, it will considered as “all rate type”.

    Result of the request will contains following information:

    Response

    Field DataType Description
    InvalidRateType String If the request contains valid and invalid rate types in single request, the invalid rate will be list down in this field.
    InvalidCurrencyCode String If the request contains valid and invalid currency code in single request, the invalid currency code will be list down in this field.
    Currencies
    CurrencyCode String(3) The currency code.
    e.g. IDR, USD, JPY
    RateDetail
    RateType String(5) Must be among erate, tt, tc, bn.
    Buy String(13) In format 6.6.
    When the currency has no value for this field, it will be set to "-".
    Sell String(13) In format 6.6.
    When the currency has no value for this field, it will be set to "-".
    LastUpdate String(19) In format YYYY-MM-DDTHH24:Mi:SS.SSSZ.
    When the currency has no value for this type, it will be set to "-".


    2. Nearest Branch Location

    Get information about nearest branch location by distance, address, city or branch type.

    GET /general/info-bca/branch
    Request:

    GET /general/info-bca/branch?Latitude=-6.137235&Longitude=106.824928 HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    curl "https://sandbox.bca.co.id/general/info-bca/branch?Latitude=-6.137235&Longitude=106.824928" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"
    

    Response:

    {
        "BranchDetails": [
          {
            "Type": "KCP",
            "Name": "Mangga Dua Mal",
            "Address": "Mangga Dua Mal No. RM. 49, Jl. Mangga Dua Raya,,,",
            "City": "Jakarta Pusat",
            "Country": "INDONESIA",
            "Latitude": "-6.137235",
            "Longitude": "106.824928",
            "Distance": "0"
            "E-Branch": "N"
            "WeekendBankingOperation": "Saturday&Sunday"
          },
          {
            "Type": "KCP",
            "Name": "Mangga Dua ITC",
            "Address": "Gedung ITC Mangga Dua Lt. IV Blok B No. 20-25, 29-32, Jl. Mangga Dua Raya,,",
            "City": "Jakarta Utara",
            "Country": "INDONESIA",
            "Latitude": "-6.1370364",
            "Longitude": "106.8250834",
            "Distance": "27.98"
            "E-Branch": "N"
            "WeekendBankingOperation": "Saturday"
          },
          {
            "Type": "KCU",
            "Name": "MANGGA DUA RAYA",
            "Address": "Jl.Mangga Dua Raya Blok C-5 Kav. No.1",
            "City": "Jakarta Utara",
            "Country": "INDONESIA",
            "Latitude": "-6.135741",
            "Longitude": "106.82623",
            "Distance": "219.81"
            "E-Branch": "N"
            "WeekendBankingOperation": "-"
          },
          {
            "Type": "KCP",
            "Name": "Agung Sedayu II",
            "Address": "Komp. Harco Mangga Dua, Jl. Mangga Dua Raya Blok F/1,,,",
            "City": "Jakarta Utara",
            "Country": "INDONESIA",
            "Latitude": "-6.136023361",
            "Longitude": "106.8284378",
            "Distance": "410.76"
            "E-Branch": "N"
            "WeekendBankingOperation": "-"
          },
          {
            "Type": "KCP",
            "Name": "Jayakarta",
            "Address": "Jl. P. Jayakarta 26 Blok A/2-3",
            "City": "Jakarta Pusat",
            "Country": "INDONESIA",
            "Latitude": "-6.141101",
            "Longitude": "106.825123",
            "Distance": "430.42"
            "E-Branch": "N"
            "WeekendBankingOperation": "-"
          },
          {
            "Type": "KCP",
            "Name": "Mangga Dua",
            "Address": "Pst. Perd. Grosir Psr Pagi Lt. 2 Bl. KA No. 001A-B,002 & 012, Jl. Arteri M.D.,,",
            "City": "Jakarta Utara",
            "Country": "INDONESIA",
            "Latitude": "-6.133801",
            "Longitude": "106.822994",
            "Distance": "437.63"
            "E-Branch": "N"
            "WeekendBankingOperation": "-"
          }
        ]
    }
    

    Query String Parameters

    Field DataType Mandatory Description
    Latitude String Y In format number( (-)3.12 ) Latitude of client location, possible for minus signed value.
    Longitude String Y In format number( (-)3.12 ) Longitude of client location, possible for minus signed value.
    Count String N Number of branches to search, in Integer. Maximum value = 20.
    Radius String N Branch distance (in meters) from client location, in Integer. *default = 500
    SearchBy String N Possible values: Address/City/Type
    Value String N If SearchBy = Address or City, value should be filled in : String;
    If SearchBy = Type, value should be filled with: kcu , kcp, e-branch, weekendbanking

    Response

    Field DataType Description
    BranchDetails Array of Object The object that hold information of the branch.
        Type String Branch type eg. KCU, KCP
        Name String Branch name
        Address String Branch full address
        City String Branch city
        Country String Branch country
        Latitude String Branch latitude
        Longitude String Branch longitude
        Distance String Branch distance from client location in meters
        E-Branch String “Y” if e-branch reservation is available otherwise it will be set to “N”
        WeekendBankingOperation String The name of the day of weekend, “Saturday”, “Sunday” and “Saturday&Sunday”

    Fire

    1. TeleTransfer to Account

    Provides service transaction “Transaction to BCA’s Account” and also “Transfer to Other Bank”. Yout request must contain following information:

    POST https://sandbox.bca.co.id/fire/transactions/to-account
    Request:

    POST /fire/transactions/to-account HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/fire/transactions/to-account" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    
    {
        "Authentication":{
            "CorporateID":"DUMMYID",
    	"AccessCode":"FcgrR21fkzjE7GpuH2Eb",
            "BranchCode":"DUMMYID01",
            "UserID":"DUMMYIDO001",
            "LocalID":"QWERTY54321"		
        },
        "SenderDetails":{
            "FirstName":"MG",
            "LastName":"",
            "DateOfBirth":"",
            "Address1":"skgknp",
            "Address2":"",
            "City":"India",
            "StateID":"",
            "PostalCode":"",
            "CountryID":"US",
            "Mobile":"",
            "IdentificationType":"",
            "IdentificationNumber":"",
            "AccountNumber":""
        },
        "BeneficiaryDetails":{
            "Name":"monica gupt",
            "DateOfBirth":"",
            "Address1":"",
            "Address2":"",
            "City":"",
            "StateID":"",
            "PostalCode":"",
            "CountryID":"ID",
            "Mobile":"",
            "IdentificationType":"",
            "IdentificationNumber":"",
            "NationalityID":"",
            "Occupation":"",
            "BankCodeType":"BIC",
            "BankCodeValue":"260544  XXX",
            "BankCountryID":"ID",
            "BankAddress":"",
            "BankCity":"",
            "AccountNumber":"0106666011"
        },
        "TransactionDetails":{
            "CurrencyID":"IDR",
            "Amount":"10000000",
            "PurposeCode":"011",
            "Description1":"",
            "Description2":"",
            "DetailOfCharges":"SHA",
            "SourceOfFund":"",
            "FormNumber":"7632605701245868"
        }
    }
    
    

    Payload

    Field DataType Mandatory Description
    Authentication
    CorporateID String(6) Y Agent code used to connect to FIRe system
    AccessCode String(20) Y Password that will be read by system for each transaction request
    BranchCode String(8) Y FI branch code of API client
    UserID String(12) Y User ID
    LocalID String(15) Y Branch code from FI sub branch of API client
    SenderDetails
    FirstName String(35) Y Sender’s first name
    LastName String(35) N Sender’s last name
    DateOfBirth String(8) N Sender’s date of birth. Format : ddmmyyyy
    Address1 String(35) Y Sender’s first address
    Address2 String(35) N Sender’s second address
    City String(18) Y Sender’s city
    StateID String(2) N State ID
    PostalCode String(10) N Sender’s postal code
    CountryID String(2) Y Sender’s country initial code. Example: Indonesia = ID
    Mobile String(20) N Sender’s mobile phone number
    IdentificationType String(2) N Sender’s identity type (PP = Passport, ID = identity, DR = Dr. License)
    IdentificationNumber String(24) N Sender’s identity number
    AccountNumber String(34) N Sender’s account number
    BeneficiaryDetails
    Name String(35) Y Beneficiary’s name
    DateOfBirth String(8) N Beneficiary’s date of birth. Format : ddmmyyyy
    Address1 String(35) N Beneficiary’s first address
    Address2 String(35) N Beneficiary’s second address
    City String(35) N Beneficiary’s city
    StateID String(2) N Beneficiary’s state ID
    PostalCode String(10) N Beneficiary’s postal code
    CountryID String(2) Y Beneficiary’s country initial code. Example : Indonesia = ID
    Mobile String(20) N Beneficiary’s mobile phone number
    IdentificationType String(2) N Beneficiary’s identity type. (PP = Passport, ID = identity, DR = Dr. License)
    IdentificationNumber String(24) N Beneficiary’s identity number
    NationalityID String(2) N Country initial code of beneficiary’s nationality. Example = Indonesia = ID
    Occupation String(30) N Beneficiary occupation
    BankCodeType String(3) Y Beneficiary’s SWIFT code type from PY04 table. (BIC, NID, CHP(CHIPS), ABA, NAM(NAME))
    BankCodeValue String(23) Y Value of SWIFT Code
    BankCountryID String(2) Y Beneficiary bank’s country code
    BankAddress String(35) N Beneficiary bank’s address
    BankCity String(35) N Beneficiary bank’s city
    AccountNumber String(34) Y Beneficiary bank’s account number
    TransactionDetails
    CurrencyID String(3) Y Transaction currency between FI and FIRe based on contract (setting FI Country in TPS)
    Amount String(20) Y Transaction nominal. Format: Number, 17.2
    PurposeCode String(3) Y Transaction purpuse:
    011 EXPORT
    012 IMPORT
    030 BUSINESS/PRIVATE TRIP
    040 EDUCATION
    150 WORKER’S REMMITANCE
    161 TAX AND FINE
    162 GRANT
    999 OTHERS
    Description1 String(35) N First description
    Description2 String(35) N Second description
    DetailOfCharges String(3) Y Charges(SHA / OUR)
    SourceOfFund String(100) N Source of transaction fund
    FormNumber String(16) Y FI Ref


    Result of the request will contains following information:

    Response:

    {
        "BeneficiaryDetails":
        {
            "Name":"monica gupt",
            "AccountNumber":"0106666011",
            "ServerBeneAccountName":"monica gupt"
        },
        "TransactionDetails":
        {
            "CurrencyID":"IDR",
            "Amount":"10000000",
            "Description1":"",
            "Description2":"",
            "FormNumber":"7632605701245868",
            "ReferenceNumber":"IDPYID01000INA17030000057",
            "ReleaseDateTime":"2017-10-30T10:37:47.380+07:00"
        },
        "StatusTransaction":"0000",
        "StatusMessage":"Success"
    }
    
    

    Response

    Field DataType Mandatory Description
    BeneficiaryDetails
    Name String(35) N Beneficiary’s name
    AccountNumber String(34) N Beneficiary bank’s account number
    ServerBeneAccountName String(35) N Name of beneficiary according to application (bank / switcher)
    TransactionDetails
    CurrencyID String(3) N Transaction currency between FI and FIRe based on contract (setting FI Country in TPS)
    Amount String(20) N Transaction nominal. Format: Number 17.2
    Description1 String(35) N First Description
    Description2 String(35) N Second Description
    FormNumber String(16) N FI Ref
    ReferenceNumber String(25) N FI Ref
    ReleaseDateTime String(24) N Transaction release time. Format : YYYY-MM-DDThh:mm:ssTZD
    StatusTransaction String(4) Y ResponseCode and Sub-ResponseCode of transaction
    StatusMessage String(100) Y Description of StatusTransaction

    2. Inquiry Account

    Provides service to Inquiry BCA’s Account name or Other Bank Switching’s Account name. Your request must contain following information:

    POST https://sandbox.bca.co.id/fire/accounts
    Request:

    POST /fire/accounts HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/fire/accounts" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    
    {
        "Authentication":{
            "CorporateID":"BCAAPI2016",
            "AccessCode":"Kw5oTuF12dseSH44Y8ww",
            "BranchCode":"BCA001",
            "UserID":"BCAUSERID",
            "LocalID":"40115"
        },
        "BeneficiaryDetails":{
            "BankCodeType":"BIC",
            "BankCodeValue":"CENAIDJAXXX",
            "AccountNumber":"0106666011"
        }
    }
    
    

    Payload

    Field DataType Mandatory Description
    Authentication
    CorporateID String(6) Y Agent code used to connect to FIRe system
    AccessCode String(20) Y Password that will be read by system for each transaction request
    BranchCode String(8) Y FI branch code of API client
    UserID String(12) Y User ID
    LocalID String(15) Y Branch code from FI sub branch of API client
    BeneficiaryDetails
    BankCodeType String(3) Y Beneficiary’s SWIFT code type from PY04 table. (BIC, NID, CHP (CHIPS), ABA, NAM(NAME))
    BankCodeValue String(23) Y
    AccountNumber String(34) Y Beneficiary bank’s account number

    Result of the request will contains following information:

    Response:

    {
        "BeneficiaryDetails":
        {
            "ServerBeneAccountName":"ERWINA TAUFIK"
        },
        "StatusTransaction":"0000",
        "StatusMessage":"Success"
    }
    
    

    Response

    Field DataType Mandatory Description
    BeneficiaryDetails
    ServerBeneAccountName String(35) N Name of beneficiary according to application (bank / switcher)
    StatusTransaction String(4) Y ResponseCode and Sub-ResponseCode of transaction
    StatusMessage String(100) Y Description of StatusTransaction

    3. Inquiry Account Balance

    Provides service to Inquiry balance for Vostro’s Account.
    Your request must contain following information:

    POST https://sandbox.bca.co.id/fire/accounts/balance
    Request:

    POST /fire/accounts/balance HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/fire/accounts/balance" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    
    {
        "Authentication":{
            "CorporateID":"BCAAPI2016",
            "AccessCode":"Kw5oT25dfs1WbSH44Y8ww",
            "BranchCode":"BCA001",
            "UserID":"BCAUSERID001,
            "LocalID":"40115"
        },
        "FIDetails":{
            "AccountNumber":"0012323008"
        }
    }
    
    

    Payload:

    Field DataType Mandatory Description
    Authentication
    CorporateID String(6) Y Agent code used to connect to FIRe system
    AccessCode String(20) Y Password that will be read by system for each transaction request
    BranchCode String(8) Y FI branch code of API client
    UserID String(12) Y User ID
    LocalID String(15) Y Branch code from FI sub branch of API Client
    FIDetails
    AccountNumber String(34) Y FI sender’s account number that registered in FIRe


    Result of the request will contains following information:

    Response:

    {
        "FIDetails":
        {
            "CurrencyID":"USD",
            "AccountBalance":"228277.56"
        },
        "StatusTransaction":"0000",
        "StatusMessage":"Success"
    }
    
    
    

    Response

    Field DataType Mandatory Description
    StatusTransaction String(4) Y ResponseCode and Sub-ResponseCode of transaction
    StatusMessage String(100) Y Description of StatusTransaction
    FIDetails
    CurrencyID String(3) Y FI sender’s currency that registered in FIRe
    AccountBalance String(20) Y FI sender’s account balance that registered in FIRe. Format : number(17.2)

    4. Inquiry Transaction

    Provides service to Inquiry Transaction that has been submitted before. Your request must contain following information:

    POST https://sandbox.bca.co.id/fire/transactions
    Request:

    POST /fire/transactions HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/fire/transactions" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    
    {
        "Authentication":{
            "CorporateID":"BCAAPI2016",
            "AccessCode":"Kw5oTuFiR1WbSH44Y8ww",
            "BranchCode":"BCA001",
            "UserID":"BCAUSERID001",
            "LocalID":"40115"
        },
        "TransactionDetails":{
            "InquiryBy":"N",
            "InquiryValue":"0247986325"
        }
    }
    
    

    Payload:

    Field DataType Mandatory Description
    Authentication
    CorporateID String(6) Y Agent code used to connect to FIRe system
    AccessCode String(20) Y Password that will be read by system for each transaction request
    BranchCode String(8) Y FI branch code of API client
    UserID String(12) Y User ID
    LocalID String(15) Y Branch code from FI sub branch of API client
    TransactionDetails
    InquiryBy String(1) Y N : PIN NON
    F : Form Number
    B : BCARef Number
    InquiryValue String(35) Y Value for PIN NON/Form Number/ BCARef Number


    Result of the request will contains following information:

    Response:

    {
        "SenderDetails":
        {
            "FirstName":"ERWINA TAUFIK",
            "LastName":""
        },
        "BeneficiaryDetails":
        {
            "Name":"ERWINA TAUFIK",
            "BankCodeType":"BIC",
            "BankCodeValue":"CENAIDJAXXX",
            "AccountNumber":"0012323008"
        },
        "TransactionDetails":
        {
            "AmountPaid":"2110000",
            "CurrencyID":"IDR",
            "ReleaseDateTime":"2016-01-13T02:37:02+07:00",
            "LocalID":"EBNMEECT",
            "FormNumber":"CT15 IDR3A",
            "ReferenceNumber":"ABNMAE01000NON16010000118",
            "PIN":"0247986325",
            "Description1":"DNP1.3",
            "Description2":""
        },
        "StatusTransaction":"0001",
        "StatusMessage":"Credited to Beneficiary Account"
    }
    
    

    Response

    Field DataType Mandatory Description
    StatusTransaction String(4) Y ResponseCode and Sub-ResponseCode of transction
    StatusMessage String(100) Y Description of StatusTransaction
    SenderDetails
    FirstName String(35) N Sender’s first name
    LastName String(35) N Sender’s last name
    BeneficiaryDetails
    Name String(35) N Beneficiary’s name
    BankCodeType String(3) N Beneficiary’s SWIFT code type from PY04 table. (BIC, NID, CHP(CHIPS), ABA, NAM(NAME))
    BankCodeValue String(23) N Value for SWIFT code type
    AccountNumber String(34) N Beneficiary bank’s account number
    TransactionDetails
    AmountPaid String(20) N Transaction value.
    Format: Number(17.2)
    CurrencyID String(3) N Currency code
    ReleaseDateTime String(24) N Transaction request time by FI
    LocalID String(15) N Local ID of Last Processed Non-Inquiry Transaction
    FormNumber String(16) N FI Ref
    ReferenceNumber String(25) N Ref number FI/BCA
    PIN String(35) N Personal Identification Number for encashment
    Description1 String(35) N First Description
    Description2 String(35) N Second description

    5. TeleTransfer Cash Transfer

    Provides service for transaction “Cash Transfer” to Non account holder.
    Your request must contain following information:

    POST https://sandbox.bca.co.id/fire/transactions/cash-transfer
    Request:

    POST /fire/transactions/cash-transfer HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/fire/transactions/cash-transfer" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    
    {
        "Authentication":{
            "CorporateID":"BCAAPI2016",
            "AccessCode":"Kw5oTu5th6SH44Y8ww",
            "BranchCode":"BCA001",
            "UserID":"BCAUSERID001",
            "LocalID":"40115"
        },
        "SenderDetails":{
            "FirstName":"BLUMA",
            "LastName":"PINTO",
            "DateOfBirth":"",
            "Address1":"DUBAI",
            "Address2":"",
            "City":"DUBAI",
            "StateID":"",
            "PostalCode":"",
            "CountryID":"AE",
            "Mobile":"",
            "IdentificationType":"",
            "IdentificationNumber":""
        },
        "BeneficiaryDetails":{
            "Name":"TEST",
            "DateOfBirth":"",
            "Address1":"Dubai",
            "Address2":"",
            "City":"DUBAI",
            "StateID":"ID",
            "PostalCode":"",
            "CountryID":"ID",
            "Mobile":"6212365478922",
            "IdentificationType":"",
            "IdentificationNumber":"",
            "NationalityID":"",
            "Occupation":""
        },
        "TransactionDetails":{
            "PIN":"477634423",
            "SecretQuestion":"",
            "SecretAnswer":"",
            "CurrencyID":"IDR",
            "Amount":"150000.00",
            "PurposeCode":"030",
            "Description1":"",
            "Description2":"",
            "DetailOfCharges":"OUR",
            "SourceOfFund":"Money transfer for family needs.",
            "FormNumber":"477634423"
    
        }
    }
    

    Payload

    Field DataType Mandatory Description
    Authentication
    CorporateID String(6) Y Agent code used to connect to FIRe system
    AccessCode String(20) Y Password that will be read by system for each transaction request
    BranchCode String(8) Y FI branch code of API client
    UserID String(12) Y User ID
    LocalID String(15) Y Branch code from FI sub branch of API client
    SenderDetails
    FirstName String(35) Y Sender’s first name
    LastName String(35) N Sender’s last name
    DateOfBirth String(8) N Sender’s date of birth. Format : ddmmyyyy
    Address1 String(35) Y Sender’s first address
    Address2 String(35) N Sender’s second address
    City String(18) Y Sender’s city
    StateID String(2) N Sender’s state ID
    PostalCode String(10) N Sender’s postal code
    CountryID String(2) Y Sender’s country initial code. Example : Indonesia = ID
    Mobile String(20) N Sender’s mobile phone number
    IdentificationType String(2) N Sender’s identity type. (PP = Passport, ID = Identity, DR = Dr. License)
    IdentificationNumber String(24) N Sender’s identity number
    BeneficiaryDetails
    Name String(35) Y Beneficiary’s name
    DateOfBirth String(8) N Beneficiary’s date of birth. Format : ddmmyyyy
    Address1 String(35) N Beneficiary’s first address
    Address2 String(35) N Beneficiary’s second address
    City String(35) N Beneficiary’s city
    StateID String(2) N Beneficiary’s state ID
    PostalCode String(10) N Beneficiary’s postal code
    CountryID String(2) Y Beneficiary’s country initial code. Example : Indonesia = ID
    Mobile String(20) N Beneficiary’s mobile phone number
    IdentificationType String(2) N Beneficiary’s identity type. (PP = Passport, ID = Identity, DR = Dr. License)
    IdentificationNumber String(24) N Beneficiary’s identity number
    NationalityID String(2) N Country initial code of beneficiary’s nationality. Example : Indonesia = ID
    Occupation String(30) N Beneficiary occupation
    TransactionDetails
    PIN String(35) N Transaction PIN number. If not available, BCA will provide it
    SecretQuestion String(100) N Questions
    SecretAnswer String(100) N Answers
    CurrencyID String(3) Y Transaction currency between FI and FIRe based on contract (setting FI Country in TPS)
    Amount String(20) Y Transaction nominal. Format: number(17,2)
    PurposeCode String(3) Y Transaction purpose.
    011 EXPORT
    012 IMPORT
    030 BUSINESS/PRIVATE TRIP
    040 EDUCATION
    150 WORKER’S REMMITANCE 161 TAX AND FINE
    162 GRANT
    999 OTHERS
    Description1 String(35) N First description
    Description2 String(35) N Second description
    DetailOfCharges String(3) Y Charges (SHA / OUR)
    SourceOfFund String(100) Y Source of transaction fund
    FormNumber String(16) Y FI Ref

    Result of the request will contains following information:

    Response:

    {
        "BeneficiaryDetails":
        {
            "Name":"TEST"
        },
        "TransactionDetails":
        {
            "PIN":"477634423",
            "CurrencyID":"IDR",
            "Amount":"150000.00",
            "Description1":"",
            "Description2":"",
            "FormNumber":"477634423",
            "ReferenceNumber":"CITIID01000NON16040000099",
            "ReleaseDateTime":""
        },
        "StatusTransaction":"0003",
        "StatusMessage":"Ready to Encash"
    }
    
    

    Response

    Field DataType Mandatory Description
    StatusTransaction String(4) Y ResponseCode and Sub- ResponseCode of transaction
    StatusMessage String(100) Y Description of StatusTransaction
    BeneficiaryDetails
    Name String(35) N Beneficiary’s name
    TransactionDetails
    PIN String(35) N Transaction PIN number. If not available, BCA will provide it
    CurrencyID String(3) N Transaction currency between FI and FIRe based on contract
    (setting FI Country in TPS)
    Amount String(20) N Transaction nominal
    Description1 String(35) N First description
    Description2 String(35) N Second description
    FormNumber String(16) N FI Ref
    ReferenceNumber String(25) N FI Ref
    ReleaseDateTime String(24) N Transaction release time.
    Format : YYYY-MM-DDThh:mm:ssTZD

    6. Amendment Cash Transfer

    Provides service for Amendment “Cash Transfer” to Non account holder. Yout request must contain following information:

    PUT https://sandbox.bca.co.id/fire/transaction/cash-transfer/amend
    Request:

    POST /fire/transactions/cash-transfer/amend HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/fire/transactions/cash-transfer/amend" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    
    {
        "Authentication":{
            "CorporateID":"BCAAPI2016",
            "AccessCode":"k1oawj8tygkrY9tBVkt",
            "BranchCode":"BCAAPI01",
            "UserID":"BCAUSERID001",
            "LocalID":"BCA01"
        },
        "AmendmentDetails":{
            "SenderDetails":{
                "FirstName":"ERIK HERNANDEZ CORTES",
                "LastName":"",
                "DateOfBirth":"",
                "Address1":"4TH AVENUE MANHATTAN",
                "Address2":"",
                "City":"NEW YORK",
                "StateID":"",
                "PostalCode":"",
                "CountryID":"US",
                "Mobile":"",
                "IdentificationType":"",
                "IdentificationNumber":""
            },
            "BeneficiaryDetails":{
                "Name":"ADRIANA PEREZ ENRRIQUEZ",
                "DateOfBirth":"",
                "Address1":"MAIN STREET 512",
                "Address2":"",
                "City":"",
                "StateID":"",
                "PostalCode":"",
                "CountryID":"ID",
                "Mobile":"",
                "IdentificationType":"",
                "IdentificationNumber":"",
                "NationalityID":"",
                "Occupation":""
            },
            "TransactionDetails":{
                "SecretQuestion":"",
                "SecretAnswer":"",
                "Description1":"",
                "Description2":""
            }
        },
        "TransactionDetails":{
            "FormNumber":"CT293 IDR2D"
        }
    }
    
    

    Payload:

    Field DataType Mandatory Description
    Authentication
    CorporateID String(6) Y Agen code used to connect to FIRe system
    AccessCode String(20) Y Password that will be read by system for each transaction request
    BranchCode String(8) Y FI branch code of API client
    UserID String(12) Y User ID
    LocalID String(15) Y Branch code from FI sub branch of API client
    AmendmentDetails
      SenderDetails
       FirstName String(35) Y Sender’s first name
       LastName String(35) N Sender’s last name
       DateOfBirth String(8) N Sender’s date of birth.
    Format : ddmmyyyy
       Address1 String(35) Y Sender’s first address
       Address2 String(35) N Sender’s second address
       City String(18) Y Sender’s city
       StateID String(2) N State ID
       PostalCode String(10) N Sender’s postal code
       CountryID String(2) Y Sender’s country initial code.
    Example : Indonesia = ID
       Mobile String(20) N Sender’s mobile phone number
       IdentificationType String(2) N Sender’s identity type
       IdentificationNumber String(24) N Sender’s identity number
      BenficiaryDetails
       Name String(35) Y Beneficiary’s name
       DateOfBirth String(8) N Beneficiary’s date of birth.
    Format : ddmmyyyy
       Address1 String(35) N Beneficiary’s first address
       Address2 String(35) N Beneficiary’s second address
       City String(35) N Beneficiary’s city
       StateID String(2) State ID
       PostalCode String(10) N Beneficiary’s postal code
       CountryID String(2) N Beneficiary’s country initial code.
    Example : Indonesia = ID
       Mobile String(20) N Beneficiary’s mobile phone number
       IdentificationType String(2) N Beneficiary’s identity type
       IdentificationNumber String(24) N Beneficiary’s identity number
       NationalityID String(2) N Country initial code of beneficiary’s nationality.
    Example : Indonesia = ID
       Occupation String(30) N Beneficiary occupation
      TransactionDetails
       Description1 String(35) N First Description
       Description2 String(35) N Second Description
       SecretQuestion String(100) N Question
       SecretAnswer String(100) N Answer
    TransactionDetails
    FormNumber String(16) Y FI Ref


    Result of the request will contains following information:

    Response:

    {
        "SenderDetails":
        {
            "FirstName":"ERIK HERNANDEZ CORTES",
            "LastName":"",
            "DateOfBirth":"",
            "Address1":"4TH AVENUE MANHATTAN",
            "Address2":"",
            "City":"NEW YORK",
            "StateID":"",
            "PostalCode":"",
            "CountryID":"US",
            "Mobile":"",
            "IdentificationType":"",
            "IdentificationNumber":""
        },
        "BeneficiaryDetails":
        {
            "Name":"ADRIANA PEREZ ENRRIQUEZ",
            "DateOfBirth":"",
            "Address1":"MAIN STREET 512",
            "Address2":"",
            "City":"",
            "StateID":"",
            "PostalCode":"",
            "CountryID":"ID",
            "Mobile":"",
            "IdentificationType":"",
            "IdentificationNumber":"",
            "NationalityID":"",
            "Occupation":""
        },
        "TransactionDetails":
        {
            "Description1":"",
            "Description2":"",
            "SecretQuestion":"",
            "SecretAnswer":"",
            "FormNumber":"CT293_IDR2D"
        },
        "StatusTransaction":"0000",
        "StatusMessage":"Success"
    }
    
    

    Response

    Field DataType Mandatory Description
    StatusTransaction String(4) Y ResponseCode and Sub-ResponseCode of transaction
    StatusMessage String(100) Y Description of StatusTransaction
    SenderDetails
    FirstName String(35) N Sender’s first name
    LastName String(35) N Sender’s last name
    DateOfBirth String(8) N Sender’s date of birth.
    Format : ddmmyyyy
    Address1 String(35) N Sender’s first address
    Address2 String(35) N Sender’s second address
    City String(18) N Sender’s city
    StateID String(2) N State ID
    PostalCode String(10) N Sender’s postal code
    CountryID String(2) N Sender’s country initial code.
    Example : Indonesia = ID
    Mobile String(20) N Sender’s mobile phone number
    IdentificationType String(2) N Sender’s identity type
    IdentificationNumber String(24) N Sender’s identity number
    BeneficiaryDetails
    Name String(35) N Beneficiary’s name
    DateOfBirth String(8) N Beneficiary’s date of birth.
    Format : ddmmyyyy
    Address1 String(35) N Beneficiary’s first address
    Address2 String(35) N Beneficiary’s second address
    City String(35) N Beneficiary’s city
    StateID String(2) N State ID
    PostalCode String(10) N Beneficiary’s postal code
    CountryID String(2) N Beneficiary’s country initial code.
    Example : Indonesia = ID
    Mobile String(20) N Beneficiary’s mobile phone number
    IdentificationType String(2) N Beneficiary’s identity type. (PP = Passport, ID = Identity, DR = Dr. License)
    IdentificationNumber String(24) N Beneficiary’s identity number
    NationalityID String(2) N Country initial code of beneficiary’s nationality.
    Example : Indonesia = ID
    Occupation String(30) N Beneficiary occupation
    TransactionDetails
    Description1 String(35) N First description
    Description2 String(35) N Second description
    SecretQuestion String(100) N Question
    SecretAnswer String(100) N Answer
    FormNumber String(16) N FI Ref

    7. Cancel Cash Transfer

    Provides service for Cancellation “Cash Transfer” to Non account holder. Yout request must contain following information:

    POST https://sandbox.bca.co.id/fire/transactions/cash-transfer/cancel
    Request:

    POST /fire/transactions/cash-transfer/cancel HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/fire/transactions/cash-transfer/cancel" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    
    {
        "Authentication":{
            "CorporateID":"BCAAPI2016",
            "AccessCode":"k6re8tG35hgNODSg3Y",
            "BranchCode":"BCA01",
            "UserID":"BCAUSERID001",
            "LocalID":"40115"
        },
        "TransactionDetails":{
            "FormNumber":"CT293 IDR2D",
            "Amount":"9350000.00",
            "CurrencyID":"IDR"
        }
    }
    
    
    

    Payload

    Field DataType Mandatory Description
    Authentication
    CorporateID String(6) Y Agent code used to connect to FIRe system
    AccessCode String(20) Y Password that will be read by system for each
    BranchCode String(8) Y FI branch code of API client
    UserID String(12) Y User ID
    LocalID String(15) Y Branch code from FI sub branch of API client
    TransactionDetails
    FormNumber String(16) Y FI Ref
    Amount String(20) Y Transaction nominal.
    Format: Number, 17.2
    CurrencyID String(3) N Currency code


    Result of the request will contains following information:

    Response:

    {
        "TransactionDetails":
        {
            "FormNumber":"CT293_IDR2D",
            "ReleaseDateTime":"2016-04-20T04:00:23+07:00"
        },
        "StatusTransaction":"0000",
        "StatusMessage":"Success"
    }
    
    
    

    Reponse

    Field DataType Mandatory Description
    StatusTransaction String(4) Y RespponseCode and Sub-ResponseCode of transaction
    StatusMessage String(100) Y Description of StatusTransaction
    TransactionDetails
    FormNumber String(16) N FI Ref
    ReleaseDateTime String(24) Transaction release time.
    Format : YYYY-MM-DDThh:mm:ssTZD

    Status Transaction

    Here is the list of Status Transaction codes that can be returned in success response.

    HTTP Code StatusTransaction StatusMessage
    200 0000 Success
    200 0001 Credited to Beneficiary account
    200 0002 Send to other bank
    200 0003 Ready to encash
    200 0004 Pending by system
    200 0005 Already encash
    200 0006 Canceled
    200 0010 Expired

    Virtual Account

    1. Inquiry Status Payment

    INQUIRY BY REQUEST ID

    GET /va/payments?CompanyCode=10111&RequestID=201711101617000000700000000001

    Request:

    GET /va/payments?CompanyCode=10111&RequestID=201711101617000000700000000001 HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/va/payments?CompanyCode=10111&RequestID=201711101617000000700000000001" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    

    Response:

    {
      "Transaction Data":
    	 [{
    		"DetailBills": 
    		[{
    			"BillReference": "",
    			"BillNumber": "12345"
    		}],
    		"RequestID": "201711100000000000700000000001",
    		"TransactionDate": "2017-11-10T16:17:00.000+07:00",
    		"PaymentFlagStatus": "Success",
    		"Reference": "01234567890",
    		"TotalAmount": "100000",
    		"PaidAmount": "100000"
    	}]
    }
    
    INQUIRY BY CUSTOMER NUMBER

    /va/payments?CompanyCode=10111&CustomerNumber=12345

    Request:

    GET /va/payments?CompanyCode=10111&CustomerNumber=12345 HTTP/1.1
    Host: sandbox.bca.co.id
    Authorization: Bearer [access_token]
    Content-Type: application/json
    Origin: [yourdomain.com]
    X-BCA-Key: [api_key]
    X-BCA-Timestamp: [timestamp]
    X-BCA-Signature: [signature]
    
    
    curl "https://sandbox.bca.co.id/va/payments?CompanyCode=10111&CustomerNumber=12345" \
      -H "Authorization: Bearer [access_token]"\
      -H "Content-Type: application/json"\
      -H "Origin: [yourdomain.com]"\
      -H "X-BCA-Key: [api_key]"\
      -H "X-BCA-Timestamp: [timestamp]"\
      -H "X-BCA-Signature: [signature]"\
    

    Response:

    {
      "Transaction Data":
    	 [{
    		"DetailBills": 
    		[{
    			"BillReference": "",
    			"BillNumber": "12345"
    		}],
    		"RequestID": "201711100000000000700000000001",
    		"TransactionDate": "2017-11-10T16:17:00.000+07:00",
    		"PaymentFlagStatus": "Success",
    		"Reference": "01234567890",
    		"TotalAmount": "100000",
    		"PaidAmount": "100000"
    	},
    	{
    		"DetailBills":[], 
    		"RequestID": "201711100000000000700000000002",
    		"TransactionDate": "2017-11-10T16:18:00.000+07:00",
    		"PaymentFlagStatus": "Success",
    		"Reference": "01234567891",
    		"TotalAmount": "500000",
    		"PaidAmount": "500000"
    	},
    	{
    		"DetailBills": 
    		[{
    			"BillReference": "00000000001",
    			"BillNumber": ""
    		}, 
    		{
    			"BillReference": "00000000002",
    			"BillNumber": ""
    		}, 
    		{
    			"BillReference": "00000000003",
    			"BillNumber": ""
    		}], 
    		"RequestID": "201711100000000000700000000003",
    		"TransactionDate": "2017-11-10T16:19:00.000+07:00",
    		"PaymentFlagStatus": "Failed",
    		"Reference": " ",
    		"TotalAmount": "20000",
    		"PaidAmount": "20000"
    	}]
    }
    

    You can see the list of payment status that are owned by the customers. The data will be automatically queried between D-day (hari H) until D-2 day (H-2 / the day before yesterday), with maximum records returned are 10 rows. Your Request must contain following information:

    Request

    Field Data Type Mandatory Description
    CompanyCode String(5) Y BCA create a unique code to identify Company who registered in BCA.
    CustomerNumber String(18) Y VA CustomerNumber (the bill number given by the Merchant.
    RequestID String(30) Y Unique transaction identifier which generated by BCA and part or the flag payment response.

    Result of the request will contains following information:

    Response

    Field Data Type Description
    TransactionData
    TransactionDate String(29) Time when customer do the payment.
    TotalAmount String(16) Total amount of transaction from merchant
    PaidAmount String(16) Total amount of paid transaction by the customer (can be different for multi bills transaction)
    PaymentFlagStatus String(10) Status of flagging to merchant.
    RequestID String(30) Unique ID generated by BCA
    Reference String(15) Reference ID for payment. (only for non multi bills)
    DetailBills
    BillNumber String(18) Reference ID for each bills in a transaction. Generated by Merchant
    BillReference String(15) Reference ID for each bills in a transaction. Generated by BCA. (multi settlement and multi bills)

    Notification

    1. Notification for Securities

    NOTIFICATION FOR SECURITIES

    POST https://www.somesecurities.com/bca/investor-account/statement
    {
    "ExternalReference":"AAABBBCCCDDDEEEE1234567890123456",
    "SeqNumber":"10023",
    "AccountNumber":"5421036985",
    "Currency":"IDR",
    "TxnDate":"08252017 143801",
    "TxnType":"NTRF",
    "TxnCode":"C",
    "AccountDebit":"1704000420",
    "AccountCredit":"5421036985",
    "TxnAmount":"200000.00",
    "OpenBalance":"-150000.00",
    "CloseBalance":"+50000.00",
    "TxnDesc":"-"
    }

    Response:

    {
        "ResponseWS":"0"
    }
    

    Retrieve information of Account Statement of Investor Account for being debited or credited.

    Request

    Field Data Type Mandatory Description
    ExternalReference String(32) Y Alphanumeric. Unique reference number for the request sent.
    SeqNumber String(14) Y Numeric. Identifier for the transaction.
    AccountNumber String(10) Y Numeric. The investor account number.
    Currency String(3) Y Currently always set to IDR
    TxnDate String(15) Y Numeric. In format ”mmddyyyy hhmmss”.
    TxnType String(4) Y Refer to table Transaction Type
    TxnCode String(1) Y D/C indicate debit or credit transaction.
    AccountDebit String(23) Y Numeric. The debited account (source of fund).
    AccountCredit String(23) Y Numeric. The credited account (transfer destination account).
    TxnAmount String(13.2) Y Numeric. Money nominal of the transfer.
    OpenBalance String(13.2) Y Numeric. Possible signed amount with - / + symbol.
    CloseBalance String(13.2) Y Numeric. Possible signed amount with - / + symbol.
    TxnDesc String(90) Y Any description.
    No. Transaction Type Transaction Code Description
    1. NTRF D Fund Transfer from KlikBCA Bisnis
    MFTS – Auto collection from KlikBCA Bisnis
    C Fund Transfer from KlikBCA Bisnis, KlikBCA Individu, m-BCA, BCA by Phone, ATM, ATM Kiosk
    MFTS – Auto credit from KlikBCA Bisnis
    Cash deposit, Fund Transfer, Credit Note from Branch
    Deposit Clearing
    2. NINT C Interest
    Giro Service
    3. NREV D Credit Reversal
    4. NKOR D Debit Correction
    C Credit Correction
    5. NTAX D Tax
    6. NCHG D Admin Fee

    When Transaction Type (TxnType) value is NREV, the value of External Reference (ExternalReference) will be the same with the reversed transaction (the original transaction with same ExternalReference number but TxnType is NTRF).

    Response

    Field Data Type Description
    ResponseWS String Flag received status.
    0 : request successfully accepted and no internal error
    1 : request unsuccessfully accepted and or some internal error occured

    2. Notification for Rejection of Domestic Bank Transfer

    NOTIFICATION OF TOLAKAN KU

    POST https://www.copartners.com/bca-ku/notif-tolakan

    -H "X-Pass-Signature:b9125ab10816f6929d214c96ffca77dfd5a1ea13856362b85eeaeb70155"
    -d "{
    "TransactionID": "31222447",
    "TransactionDate": "2018-07-05",
    "TransferType": "LLG",
    "PPUNumber": "FMLC",
    "AccountNoFrom": "0103007001",
    "AccountNoTo": "03300102020450",
    "ReceiverBankCode": "BRINIDJA",
    "ReceiverName": "Ripngatin",
    "Amount": "1000000.00",
    "RejectCode": "02",
    "RejectStatusID": "Nomor rekening tidak terdaftar",
    "RejectStatusEN": "Account number is not registered"
    }"

    Response:

    {
        "ResponseWS":"1"
    }
    

    Service for BCA to send notification of Tolakan KU.

    Request

    Field Data Type Mandatory Description
    TransactionID String(8) Y UUID as unique ID for every request.
    TransactionDate String(10) Y Transaction date. Format: yyyy-MM-dd.
    TransferType String(3) Y Transaction Type. Ex: LLG, RTG.
    PPUNumber String(5) Y PPU Number.
    AccountNoFrom String(10) Y Sender Account Number.
    AccountNoTo String(34) Y Receiver Account Number.
    ReceiverBankCode String(8) Y Receiver Bank SWIFT Code.
    ReceiverName String Y Receiver Name.
    Amount String(16) Y Transfer Amount. Format: Numeric, 13.2.
    RejectStatusID String Y Reject Description in Indonesian.
    RejectStatusEN String Y Reject Description in English.

    Response

    Field Data Type Description
    ResponseWS String Response from Co-Partner

    Errors

    BCA API uses following error schema:

    {
        "ErrorCode" : "Error Code",
        "ErrorMessage" : {
            "Indonesian" : "Pesan error",
            "English" : "Error message"
            }
    }
    

    Here is the list of error codes that can be returned:

    HTTP Code Error Code Error Message (Indonesian) Error Message (English)
    404 ESB-07-271 Tidak ada transaksi No Transaction
    400 ESB-07-279 Tanggal awal lebih kecil dari tanggal buka rekening Start date less than account open date
    400 ESB-14-001 HMAC tidak cocok HMAC mismatch
    400 ESB-14-002 Permintaan tidak valid Invalid request
    400 ESB-14-003 Timestamp tidak valid Invalid timestamp
    400 ESB-14-004 Parameter input tidak valid Invalid input parameter
    503 ESB-14-005 Sistem sedang dalam maintenance System under maintenance
    504 ESB-14-006 Timeout, silahkan periksa mutasi rekening Timeout, please check your account statement
    504 ESB-14-007 Timeout Timeout
    401 ESB-14-008 client_id/client_secret/grant_type tidak valid Invalid client_id/client_secret/grant_type
    401 ESB-14-009 Tidak berhak Unauthorized
    200 ESB-30-002 RateType belum di implementasi RateType not yet implemented
    400 ESB-82-001 Field [FieldName] harus diisi Missing mandatory field [FieldName]
    400 ESB-82-002 CorporateID tidak valid Invalid CorporateID
    400 ESB-82-003 TransactionID tidak unik TransactionID not unique
    400 ESB-82-004 TransactionDate tidak valid Invalid TransactionDate
    403 ESB-82-006 Nominal transaksi melebihi batas maksimum Max amount of transaction is exceeded
    400 ESB-82-007 TransactionDate sebelum hari ini TransactionDate is back date
    400 ESB-82-008 Rekening perusahaan tidak valid Invalid Company account
    400 ESB-82-009 CurrencyCode tidak valid Invalid CurrencyCode
    400 ESB-82-010 Format TransactionID tidak valid Invalid TransactionID format
    400 ESB-82-011 Amount tidak valid Invalid amount
    400 ESB-82-012 Panjang karakter data input tidak valid Invalid input length
    400 ESB-82-013 Tipe data input tidak valid Invalid data type
    400 ESB-82-014 AccountNumber tidak valid Invalid AccountNumber
    403 ESB-82-015 Min Max Amount Exceeded Min Max Amount Exceeded
    403 ESB-82-018 Rekening Dormant Account Dormant
    402 ESB-82-019 Saldo tidak cukup Insufficient fund
    400 ESB-82-020 Tipe rekening tidak valid Invalid Account Type
    403 ESB-82-021 Rekening tidak dapat melakukan transaksi Account cannot do transaction
    404 ESB-82-022 Rekening tutup Account Closed
    500 ESB-82-023 Transaksi gagal Transaction Failed
    504 ESB-82-024 Timeout, silahkan periksa mutasi rekening Timeout, please check your account statement
    503 ESB-82-025 Sedang diproses, silahkan periksa mutasi rekening In Progress, please check your account statement
    503 ESB-82-026 Lewat batas waktu cut off Cut off time is exceeded
    400 ESB-99-009 Field [FieldName] harus diisi Missing mandatory field [FieldName]
    400 ESB-99-039 Isian input Count tidak valid input for field Count not valid
    400 ESB-99-040 Tipe isian field [FieldName] tidak valid Input type for field [FieldName] not valid
    403 ESB-99-089 Transaksi berhasil sebagian Transaction success partially
    400 ESB-99-112 Input String JSON tidak valid Invalid JSON String Input
    400 ESB-99-113 Transaksi ditolak Transaction Rejected
    400 ESB-99-127 Transaksi tidak ditemukan Transaction not found
    400 ESB-99-128 Panjang field [FieldName] melebihi ketentuan Field [FieldName] exceed limit
    400 ESB-99-128 Total input [FieldName] melebihi ketentuan Total [FieldName] input exceed limit
    400 ESB-99-132 Data tidak ditemukan No Data Found
    400 ESB-99-156 ChannelType tidak valid ChannelType is not valid
    400 ESB-99-156 AccountNumber tidak valid Invalid AccountNumber
    400 ESB-99-157 Transaksi ditolak Transaction Rejected
    400 ESB-99-158 Tanggal berakhir lebih besar dari tanggal hari ini End date more than today
    400 ESB-99-158 Tanggal mulai lebih besar dari tanggal hari ini Start date more than today
    400 ESB-99-158 Maksimal mutasi rekening yang dipilih 31 hari yang lalu Maximal account statement 31 days ago
    400 ESB-99-158 Tanggal mulai lebih besar dari tanggal berakhir Start date more than end date
    400 ESB-99-197 Nama atau nomor rekening tidak sesuai Account name/number does not match
    400 ESB-99-335 Mata uang tidak valid Invalid Currency
    400 ESB-99-339 Tipe Kurs tidak valid Invalid RateType
    400 0101 Field [fieldName] is required Field [fieldName] is required
    400 0102 Field [fieldName] is larger than expected Field [fieldName] is larger than expected
    400 0103 Data type is invalid at field [fieldName] Data type is invalid at field [fieldName]
    400 0402 Limit Produk Tidak Cukup Product Limit Not Enough
    400 0406 Rekening Penerima Tidak Ditemukan Beneficiary Account Not Found
    400 0408 Transaksi Tidak Ditemukan Transaction Not Found
    400 0409 Rekening Penerima Tutup Beneficiary Account Closed
    400 0412 Bukan Member Switching Non Switching Member
    400 0413 Rekening Penerima Tutup Beneficiary Account Closed
    500 ESB-99-999 Sistem sedang tidak tersedia System unavailable