1. Overview

Merchants inquiry the VA status from BNC, and BNC returns the VA results to the merchant backend.

2. API Specification

3. Request

3.1. Request Header

Name

Type

M/O

Length

Description

X-TIMESTAMP

String

M

25

The request timestamp. Formatted with "yyyy-MM-ddTHH:mm:ssZ". E.g. 2022-09-06T13:00:00+07:00

X-SIGNATURE

String

M

2048

The Merchant or Client generated signature. Using Asymmetric-Signature mechanism to get the token, encrypted with SHA256withRSA. 

 

e.g. 

stringToSign = <HTTP Method> + ":" + <Service Endpoint> + ":" + toLowercase(hexEncode(SHA256(minify(<Request Body>)))) + ":" + <X-TIMESTAMP>

X-SIGNATURE = SHA256withRSA(PrivateKey, stringToSign)

X-ORIGIN

String

M

256

Client’s host origin.

X-PARTNER-ID

String

M

32

The Merchant or Client Id. Provided by BNC.

X-EXTERNAL-ID

String

M

36

The Merchant External ID of request. 

 

e.g. 77778042022091500001

CHANNEL-ID

String

M

5

PJP Channel ID. 95221

3.1.1 Sample Request Header

Content-type: application/json 
Authorization: Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a" 
X-TIMESTAMP: 2020-12-21T14:56:11+07:00
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
X-ORIGIN: www.hostname.com
X-PARTNER-ID: 82150823919040624621823174737537 
X-EXTERNAL-ID: 41807553358950093184162180797837 
CHANNEL-ID: 95221 

3.2 Request Body

Name

Type

M/O

Length

Description

partnerServiceId

String

M

8

Derivative of X- PARTNER-ID , similar to company code,8 digit left padding space. partnerServiceId + customerNo or virtualAccountNo

customerNo

String

M

20

Uniquenumber (up to 20 digits). partnerServi ceId + customerNo or virtualAccountNo

virtualAccountNo

String

M

28

partnerServiceId (8 digit left padding 0) + customerNo (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo

inquiryRequestId

String

M

128

Unique identifier from Inquiry. For use case bill stored in Partner. If not send, will return array of transaction based on virtualAccountNo

paymentRequestId

String

M

128

Unique identifier from Payment was generated by PJP.

additionalInfo

Object

O

N/A

Additional Info

3.2.1 Sample Request Body

{
   "partnerServiceId":" 088899",
   "customerNo":12345678901234567890,
   "virtualAccountNo":" 08889912345678901234567890",
   "inquiryRequestId":"abcdef-123456-abcdef",
   "paymentRequestId":"abcdef-123456-abcdef",
   "additionalInfo":{
      
   }
}

4. Response

4.1 Response Body

Name

Type

M/O

Length

Description

responseCode

String

M

7

The BI Snap standard of response code.

responseMessage

String

M

150

The message corresponding to the response code.

virtualAccountData

Object

M

N/A

Virtual account data.

-> paymentFlagReason

Object

O

N/A

Reason for Payment Status multi language.

-> -> english

String

O

200

Reason for Payment Status in English.

-> -> indonesia

String

O

200

Reason for Payment Status in Bahasa.

-> partnerServiceId

String

M

8

Derivative of X- PARTNER-ID , similar to company code, 8 digit left padding space. partnerServiceId + customerNo or virtualAccountNo.

-> customerNo

String

M

20

Unique number (up to 20digits).

-> virtualAccountNo

String

M

28

partnerServiceId (8 digit left padding 0) + customerNo (up to 20 digits).

-> inquiryRequestId

String

M

128

Unique identifier from Inquiry

-> paymentRequestId

String

C

128

Unique identifier for this Payment from PJP. Mandatory if Payment happened.

-> paidAmount

Array of objects

O

N/A

-> -> value

String

M

16.2

Paid amount with decimals (ISO 4217).

-> -> currency

String

M

3

Currency of amount (ISO 4217).

-> paidBills

String

O

6

-> totalAmount

Array of objects

O

N/A

-> -> value

String

M

16.2

Transaction Amount. Total amount from Inquiry with 2 decimal (ISO 4217).

-> -> currency

String

M

3

Currency of amount (ISO 4217).

-> trxDateTime

Date

O

25

PJP internal system datetime with timezone, which follows the ISO-8601 standard.

-> transactionDate

Date

O

25

Payment date time when the payment happened.

-> referenceNo

String

O

15

Payment auth code generated by PJP

-> paymentType

String

O

1

Type of payment (1=Cash. 2=Transfer)

-> flagAdvise

String

O

1

Y = retry notification
N = new notification

-> paymentFlagStatus

String

O

2

Status for payment flag

-> billDetails

Array of objects

O

N/A

Array with maximum 24 objects.

-> -> billCode

String

O

2

Bill code for Customer choose.

-> -> billNo

String

O

18

Bill number from Partner.

-> -> billName

String

O

20

Bill name.

-> -> billShortName

String

O

10

Bill Name to shown to.

-> -> billDescription

Object

O

Bill Description.

-> -> -> english

String

O

18

Bill Description in English.

-> -> -> indonesia

String

O

18

Bill Description in Bahasa.

-> -> billSubCompany

String

O

5

Partner’s product code.

-> -> billAmount

Array of objects

O

-> -> -> value

String

M

16.2

Transaction Amount nominal inputted by Customer with 2 decimal (ISO 4217)

-> -> -> currency

String

M

3

Currency (ISO 4217).

-> -> additionalInfo

Object

O

N/A

Additional Information for custom use for each bill.

-> -> billReferenceNo

Number

O

15

Bill auth code generated by PJP.

-> -> status

String

O

2

Payment status for specific Bill.

-> -> reason

Object

O

2

Reason for Payment Status for specific Bill multi language.

-> -> -> english

String

O

64

Reason for Payment Status for specific Bill in English.

-> -> -> indonesia

String

O

64

Reason for Payment Status for specific Bill in Bahasa.

-> freeTexts

Arrayof Objects

O

Array with maximum 25 objects.

-> -> english

String

O

32

Will be shown in Channel.

-> -> indonesia

String

O

32

Will be shown in Channel.

-> additionalInfo

Object

O

N/A

Additional Info.

4.1.1 Sample Response Body

Success:

{
   "responseCode":"2002600",
   "responseMessage":"Success",
   "virtualAccountData":{
      "paymentFlagReason":{
         "english":"Success",
         "indonesia":"Sukses"
      },
      "partnerServiceId":" 088899",
      "customerNo":"12345678901234567890",
      "virtualAccountNo":" 08889912345678901234567890",
      "inquiryRequestId":"abcdef-123456-abcdef",
      "paymentRequestId":"abcdef-123456-abcdef",
      "paidAmount":[
         {
            "value":"12345678.00",
            "currency":"IDR"
         }
      ],
      "paidBills":"95000",
      "totalAmount":[
         {
            "value":"12345678.00",
            "currency":"IDR"
         }
      ],
      "trxDateTime":"20201231T235959Z",
      "transactionDate":"20201230T235959Z",
      "referenceNo":"123456789012345",
      "paymentType":1,
      "flagAdvise":"Y",
      "paymentFlagStatus":"02",
      "billDetails":[
         {
            "billCode":"01",
            "billNo":"123456789012345678",
            "billName":"Bill A for Jan",
            "billShortName":"Bill A",
            "billDescription":{
               "english":"Maintenance",
               "indonesia":"Pemeliharaan"
            },
            "billSubCompany":"00001",
            "billAmount":{
               "value":"12345678.00",
               "currency":"IDR"
            },
            "additionalInfo":{
               
            },
            "billReferenceNo":"123456789012345",
            "status":"00",
            "reason":{
               "english":"Success",
               "indonesia":"Sukses"
            }
         }
      ],
      "freeTexts":[
         {
            "english":"Free text",
            "indonesia":"Tulisan bebas"
         }
      ]
   },
   "additionalInfo":{
      
   }
}

Fail:

 

Response Code

HTTP Code

Service Code

Case Code

Response Message

Description

1

2002600

200

any

00

Successful

Successful

2

4002600

400

any

00

Bad Request

General request failed error, including message parsing failed.

3

4002601

400

any

01

Invalid Field Format {field name}

Invalid format

4

4002602

400

any

02

Invalid Mandatory Field {field name}

Missing or invalid format on mandatory field

5

4012600

401

any

00

Unauthorized. [reason]

General unauthorized error (No Interface Def, API is Invalid, Oauth Failed, Verify Client Secret Fail, Client Forbidden Access API, Unknown Client, Key not Found)

6

4012601

401

any

01

Invalid Token (B2B)

Token found in request is invalid (Access Token Not Exist, Access Token Expiry)

7

4012603

401

any

03

Token Not Found (B2B)

Token not found in the system. This occurs on any API that requires token as input parameter

8

4042608

404

any

08

InvalidMerchant

Merchant does not exist or status abnormal

9

4042611

404

any

11

Invalid Card/Accoun t/Customer [info]/Virtual Account

Card information may be invalid, or the card account may be blacklisted, or Virtual Account number maybe invalid.

10

4042612

404

any

12

Invalid Bill/Virtual Account [Reason]

The bill is blocked/suspended/not found.Virtual account is suspend/not found.

11

4042613

404

any

13

InvalidAmount

The amount doesn't match with what supposed to

12

4092601

409

any

01

Duplicate partnerReferenceNo

Transaction has previously been processed indicates the same partnerReferenceNo already success

13

5002602

500

Any

02

External Server Error

Backend system failure, etc

6. Reference

Field Code

Field Name

Description

1

M

Mandatory

Mandatory

2

ME

Mandatory Equal

Mandatory Equal – value in the request and the response must be the same.

3

C

Conditional

Conditional

4

CE

Conditional Equal

Conditional Equal – value in the request and the response must be the same.

5

O

Optional

Optional

Bank Neo Commerce terdaftar dan diawasi oleh OJK
Bank Neo Commerce merupakan peserta penjamin LPS
All Rights Reserved. PT Bank Neo Commerce 2025