BNC v1.0
DOKU has partnered with various banks and one of them is BNC to provide Virtual Account Payment. Learn more about how DOKU can help you integrate with BNC Virtual Account here.
Process Flow
There is one method to integrate with BNC VA:
VA From Acquirer
Merchant could hit create VA API (service code 27) to create their virtual account number by acquirer. The number created then will be inquired by acquirer, merchant can get the payment notification.
Check this flow diagram to get know about this method

Integration Steps
Here is the overview of how to integrate with Virtual Account:
1. Create Virtual Account
To create Virtual Account, you will need to hit this API through your Backend:
API Endpoint
Service Code
27
HTTP Method
POST
API Endpoint Sandbox
API Endpoint Production
Path
Here is the sample request header, request body and response body for BNC VA
DOKU Generate Payment Code
Client's current local time in yyyy-MM- ddTHH:mm:ssTZD format
2020-12-21T07:56:11.000ZAlgorithm symmetric signature HMAC_SHA512 (clientSecret, stringToSign)
85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5Unique ID for a partner (DOKU'S Client ID)
821508239190Numeric String. Reference number that should be unique in the same day (request-id)
418075533589Device identification on which the API services are currently being accessed by the end user (customer). Can’t contain symbols
95221conditional. IP address of the end user (customer) using IPv4 format
95221Access Token obtained from Get B2B Token API
Bearer eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2OTgwNTA3NDMsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjExLTE2OTY5MTk2NTE5MTgifQ.x-D5VlK6TlVZbLPUSCr-Gbfgh4tnp0QDJmedYFHJGHFjg1c4x39pszU4sLvRhr0Jk0vKdMIzxUZeNhKoesWqDJitnG3kfrNZNsMb_WYUC0tJW91onXzYOKXiTgsHwRNFoWPQHlXIEtT3RQm-SRlCpk_E0gsavgkQn2-kbJEBnPhIs4eKg5IUY9GYi4hRr-_GHsudDl8sd2B5UBB_rHYq36BRmLXH7i7MQADHPsB1ktPVgk3ZWF0jebEjI-lJ88p-omL1vQNvRseXej2HKBa9chGLmPDvXYBQaRmmstHz-tv1boFrHfwsHJebcUec-i3WE1vMvP_3EPXdbqb45N4ciQTransaction ID in Partner system. | min length: 1 | max length: 64
23219829713Transaction ID in Partner system. Fil 1 for Closed Payment, fill 2 for Open Payment | min length: 1 | max length: 1
1Expiration date for Virtual Account. ISO-8601
2023-01-01T10:55:00+07:00similar to company code/BIN,8 digit left padding space. | min length: 1 | max length: 8
90341537Unique number (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | min length: 1 | max length: 20
00000000000000000000partnerServiceId (8 digit left padding 0) + customerNo (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | min length: 1 | max length: 28
0000000000000000000000000000Customer Name | min length: 1 | max length: 255
Toru YamashitaCustomer Email | min length: 1 | max length: 255
[email protected]Customer Phone, Format: 62xxxxxxxxx xxxx | min length: 9 | max length: 30
0816291271826item created
invalid input, object invalid
Merchant Generate Payment Code
Client's current local time in yyyy-MM- ddTHH:mm:ssTZD format
2020-12-21T07:56:11.000ZAlgorithm symmetric signature HMAC_SHA512 (clientSecret, stringToSign)
85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5Unique ID for a partner (DOKU'S Client ID)
821508239190Numeric String. Reference number that should be unique in the same day (request-id)
418075533589Device identification on which the API services are currently being accessed by the end user (customer). Can’t contain symbols
95221conditional. IP address of the end user (customer) using IPv4 format
95221Access Token obtained from Get B2B Token API
Bearer eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2OTgwNTA3NDMsImlzcyI6IkRPS1UiLCJjbGllbnRJZCI6IkJSTi0wMjExLTE2OTY5MTk2NTE5MTgifQ.x-D5VlK6TlVZbLPUSCr-Gbfgh4tnp0QDJmedYFHJGHFjg1c4x39pszU4sLvRhr0Jk0vKdMIzxUZeNhKoesWqDJitnG3kfrNZNsMb_WYUC0tJW91onXzYOKXiTgsHwRNFoWPQHlXIEtT3RQm-SRlCpk_E0gsavgkQn2-kbJEBnPhIs4eKg5IUY9GYi4hRr-_GHsudDl8sd2B5UBB_rHYq36BRmLXH7i7MQADHPsB1ktPVgk3ZWF0jebEjI-lJ88p-omL1vQNvRseXej2HKBa9chGLmPDvXYBQaRmmstHz-tv1boFrHfwsHJebcUec-i3WE1vMvP_3EPXdbqb45N4ciQTransaction ID in Partner system. | min length: 1 | max length: 64
23219829713Transaction ID in Partner system. Fil 1 for Closed Payment, fill 2 for Open Payment | min length: 1 | max length: 1
1Expiration date for Virtual Account. ISO-8601
2023-01-01T10:55:00+07:00similar to company code/BIN,8 digit left padding space. | min length: 1 | max length: 8
90341537Unique number (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | min length: 1 | max length: 20
00000000000000000001partnerServiceId (8 digit left padding 0) + customerNo (up to 20 digits). partnerServiceId + customerNo or virtualAccountNo. | min length: 1 | max length: 28
9034153700000000000000000001Customer Name | min length: 1 | max length: 255
Toru YamashitaCustomer Email | min length: 1 | max length: 255
[email protected]Customer Phone, Format: 62xxxxxxxxx xxxx | min length: 9 | max length: 30
0816291271826item created
invalid input, object invalid
Pro Tips!
You can also show payment instruction link to your customer by using
virtual_account_info.how_to_pay_pageIf you wish to customize the UI for the payment instruction, you can use the
virtual_account_info.how_to_pay_api
2. Display Virtual Account
You can display the payment code to your customer by using virtual_account_info.virtual_account_number that you retrieved from the API response.
3. Acknowledge payment result
After the payment is being made by your customer, DOKU will send HTTP Notification to your defined Notification URL. Learn how to handle the notification from DOKU .
4. Hit DOKU Check Status API
If you do not receive notifications from DOKU due to some issue, you can perform an API status check on the DOKU side to determine the updated transaction status. See the detailed request and response here Check Status API.
Last updated
Was this helpful?