Skip to content

Virtual Accounts

What are Virtual Accounts?

Virtual Accounts (VAs) enables various types and sizes of businesses to accept payments via bank transfer, without having to open a dedicated bank account with each bank.

With VAs, a single bank account is sub-divided to almost any number of ‘virtual’ accounts. As sub-divisions of the main account, virtual accounts are able to have their own virtual account numbers, statements, and balances.

How Virtual Accounts Work

VAs allows us to identify payments easily. If a merchant has three payments of IDR100,000, a virtual account allows us to assign this instantly to each payer by giving them unique account numbers to pay into.

  • The merchant tells each customer to pay into a specific invoice or VA for all their transactions.
  • In the background, each VA number is tied to a customer or an invoice.
  • Therefore when a payment is received, a callback is sent to the merchant, and the merchant can immediately identify the buyer or which invoice it came from.

Xendit has direct connections with Mandiri, BRI, BNI, and Permata. When you go live with us, you are assigned a Virtual Account range with each of the 4 banks. These ranges can be activated through the configuration settings in the dashboard.

Why use Xendit VAs?

80% of transactions in Indonesia occur via bank transfer. Xendit offers VAs with major banks in Indonesia - BNI, BRI, Mandiri, and Permata. We save significant time and costs for merchants who receive payments from end-customers across a range of banks and have a need to identify these payments. Instead of having to open bank accounts individually across these 3 banks, they can simply open a single account with us, integrate once and have immediate and centralised access to the VAs across all banks.

VA Numbers and Ranges

Payments are easily identified using VA numbers that help us map transactions to the businesses that we serve. We provide each business a unique range of VA numbers which can be tied to invoices or end users. When a payment is received, reconciliation occurs using the VA number, and the payment and it's description will be displayed on the Xendit dashboard.

The VA numbers are 15 -18 digit account numbers that are randomly generated from a defined range (e.g. 02938-1001-000000 to 02938-1001-999999). The first 4 (in BNI, Permata VAs) or 5 (in Mandiri, BRI VAs) digits represent the merchant (Xendit), the next 4 digits identifies the sub-merchant (the company identifier) and the remaining digits identify the VA.

We offer new customers 999,999 virtual account numbers to start with. This range of VA numbers will be setup during the Go Live process. If there is a need for additional VA numbers beyond the number provided, please contact our customer support.

Please note that the merchant code will be automatically added when the VA or Invoice is created. Users do not need to add the merchant code when creating a VA.

Customers are able to activate their Fixed Virtual Account Range from the dashboard. This can be done by going to Dashboard > Settings > Configuration > Fixed Virtual Accounts, and clicking the "Activate!" button. The Fixed VA range will be set and activated instantly. Users who had previously tested Fixed Virtual Accounts in Development Mode will be given a new VA range after clicking "Activate!", but the old range will still be active in Development Mode.

Limitations of payment amounts into Virtual Accounts

Payment Method Minimum amount (IDR) Maximum amount (IDR)
Virtual Account BNI 1 <50,000,000,000
Mandiri 1 <50,000,000,000
BRI 1 <50,000,000,000
Permata 1 <10,000,000,000

Please note that there is also a transfer limit for ATM, mBanking and iBanking transfers which vary across each bank. Some smaller banks may also cap each transaction at Rp25 million

Virtual Accounts name limitations

While Xendit does not limit the length of virtual account names, it has been discovered that banks have limits on name length that results in the VA name being cut off at the max string length when the end customer tries to pay.

Below is max VA length guidance for ibanking and mbanking

Virtual Account Bank Max string length (SAME bank) Max string length (Interbank)
BNI 32 characters 30 characters
Mandiri 156 characters 25 characters
BRI 35 characters 24 characters
Permata 13 characters 13 characters

Please note: Permata VAs will show the VA name XENDIT as a prefix when your end customer pays. This will only be seen by the end customer and will not appear on the dashboard, API response, or callback payload.

Please note: Payments through BRI Virtual Accounts will showPT Sinar Digital Terdepan as the Nama Institusi(Institution Name) when the your end customer pays. This will only be seen by the end customer and will not appear in the dashboard, API Resposne, or callback payload.

Virtual Account Features

Description of the available features:

  1. Fixed vs. Non-Fixed: A fixed VA is linked to an entity (your customer) whereas a non-fixed VA is linked to an invoice

  2. Open vs. Closed: An open VA is able to accept any amount whereas a closed VA can only accept a fixed amount which you are able to specify. For Fixed VAs, you may set them as "open" or "closed" when assigning them to your customers.

  3. Single vs. Multiple Use: Single Use VAs can only be paid once, Multiple Use VAs can be paid many times as long as it is before the expiry date. This feature is only available for Fixed VA (Non-fixed VA is only for Single Use).

  4. Expiry Date: The VA has an expiry date and your customers will not be able to pay the VA past it’s expiry date. The VA expiry date is set-up when the VA is being created.

Non-fixed VA Fixed VA
Closed Amount
Open Amount
Single Use
Multiple Use
Expiration Date can be Set
Creation of VA only requires one API call to set up with the 4 banks
Can be created from Dashboard

Types of VAs

alt text

Paying into Virtual Accounts

Your customers are able to pay into your Virtual Account via ATM, mobile banking, and internet banking. However, please note that methods of payment differ according to the sender's bank. Below is an example of a typical VA payment flow.

alt text

Click on the links below to download our payment guides.

From the Same Bank Download how to pay Mandiri 88608 here
Download how to pay Mandiri 88908 here
Download how to pay here Download how to pay here Download how to pay here
From Another Bank's ATM Download how to pay here Download how to pay here Download how to pay here Download how to pay here

We highly recommend directing customers to pay into the VAs using the same bank, i.e. if you have Mandiri, kindly use the Mandiri VA. If none of the bank accounts are available, we recommend paying into BNI Virtual Account for interbank transfers. Interbank transfers using other than BNI VA carries a risk of delayed completion, and may take up to 24 hours.

VA Settlement

Payments made into a VA/ invoice will flow into your Xendit balance on the same day or the next day depending on the bank that the user pays into.

We offer instant settlements for payments into Mandiri, BRI, BNI, and Permata. Payments received will move into escrow and then into your Xendit cash account instantly.

From the dashboard, you may then withdraw the funds into your own account.

VA Callbacks

After your customer has paid the VA, the bank notifies Xendit and we will then process the transaction and notify you by sending a callback to your server. The transaction will also be displayed on your Dashboard.

If the first callback to your server fails (i.e. returns a non-200 response code), we retry up to 5 times with a 10s time delay between each retry. The callback request that we send will include your validation token, which you may find on your Dashboard in Settings > API Key > Validation Token, and each callback will have it’s own unique id.

Integration with our VAs

Please refer to our Development section for guides on getting integrated with us.


  1. Which banks do you support for VA creation?

    Xendit supports virtual accounts for Mandiri, BRI, BNI and Permata. We also support BCA virtual accounts -- please contact our customer support if interested.

  2. How many days does it take to register for a new VA for my company?

    It takes one working day to register for a new VA.

  3. To create a Virtual Accounts for each transaction, do I need to wait for the bank?

    No. The Virtual Account is created instantly.

  4. I've encountered a “transaction cannot be processed” error.

    We have changed "Penyedia Jasa" to "Xendit 88608", for easier recognition. "PT Sinar Digital Terdepan" is reserved for 88464. Therefore, when choosing the institution, please pick "xendit 88608".

  5. What is an expiry date and how do I set it?

    The expiry date is the date and time in which the VA expires and can no longer be paid into. Payments made after expiry date will be rejected. The default expiry date for invoice VAs is 24 hours. To change the default expiry date, please contact our customer support. Fixed VAs have no default expiry date, but users can set on in the create VA api request (see our api reference docs for more information). Note: Times are in UTC format.

  6. How will I know if the VA is active/ inactive?

    Inactive VAs will display a "system is not available" error when someone attempts to pay into the VA.

  7. How do I set up an open or closed VA?

    Please contact our customer support on email or whatsapp, and we will set the VA to open or closed for you. This feature is currently not available on the dashboard.

  8. Can I cancel a VA that's been created, before it expires?

    No, we currently do not have a feature that allows VAs to be cancelled.

  9. Can i use the same account to access both VAs and disbursements/ all the other products that xendit has?

    Yes you can, however please be aware that if rates for the transactions are not set in a contract, you will be charged whatever our current standard rates are and these rates can and will change from time to time.

  10. What name will appear on the ATM/mobile phone/iBanking screen when an end-user pays into a Xendit VA?

    By default, the product name will be “Xendit” for other banks. However, merchants will be able to modify the name of each VA.