
PayStory: Bank Transfer and Convenience Store Payment
After my article discussing the 3D Secure process works, I think I would like to make stories with a special theme about payment. Let’s call it PayStory so it will not mix with other stories theme.
Right now let’s talk about Bank Transfer and Convenience Store Payment, currently the most popular payment method on online payment in Indonesia that can beat card payment, wallet payment and internet banking payment. I put these two payment methods to discuss together because they are using the same process that is Virtual Account payment process.
So what is Virtual Account payment process? It’s a process where we as a customer will get a series of number or code from merchant or payment gateway when we do the payment and we will input that number or code in Bank application or Bank device or in Convenience Store cashier along with the amount that we want to pay. Usually, we call this number or code as a “Pay Code” or “Payment Code”.
The general format of a Payment Code:

The first 5 digits are the parent ID which identifies this code belongs to which Bank or which Convenience Store. The 11 digits left can be used as payment ID by payment gateway or merchants. There are things that we can do with the payment code such as create a parent ID with “08” in the last digit, so a phone number can become the payment ID, usually used by the marketplace or e-money platform.
Normally the length of the code is up to 16 digits, although some partners able to process more than 16 digits. But the problem is on the switching company that connects to the bank which right now can only process 16 digits. So currently payment code that has a length more than 16 digits cannot be used between Banks, it can only be used in own Bank’s local system, we call it can only be run in “On Us” platform. If the payment code can be used between Banks then we call it “Off Us” process.
Normally the length of the code is up to 16 digits, although some partners able to process more than 16 digits
The Bank Transfer and Convenience Store Payment flow will be like this:

So it’s a 3 step payment:
- We get the payment code from the merchant or payment gateway to do the payment
- We input and check the payment code on Bank or Convenience Store is it valid or not
- We pay based on payment data in the payment code at Bank or Convenience Store
This is not one step payment, there is a delay between Get Payment Code process to go to the Inquiry process. After process number 1 finish, it just stops there, waiting for the customer doing process number 2. Process number 2 and 3 will run in sequence in the Bank or Convenience Store system so you won’t notice there are 2 steps of processes that happened.
This is not one step payment, there is a delay between Get Payment Code process to go to the Inquiry process
There are options to make the amount we pay must exactly the same as we request or just accept any amount. It’s called “Close Amount” or “Open Amount” option. Merchant most often used Close Amount option, because they want people to pay the same amount as their item price. But some merchant needs Open Amount option, like for donation or top up. Not all banks support Close Amount and Open Amount type, so you have to check first on the bank.
There are 2 types of how we pay then:
- When we input the payment code, we have to input the amount we want to pay. This can happen in ATM using menu transfer to other bank or using menu payment but the payment has an option Open Amount or in Convenience Store with Open Amount option also.
- There is also a scenario when we input the payment code, the amount we have to pay already inform in the front, so we have to pay according to the amount. This normally happens in the Convenience Store or in ATM using menu payment or transfer to the same Bank.
There are options to make the amount we pay must exactly the same as we request or just accept any amount
There are some notes that you need to know about this kind of payment:
- It’s not one step payment.
- There is an expiry time for you to do the payment.
- Depend on Bank or Convenience Store policies, the length of payment code can be at least 6 digits (5 digits as parent ID and 1 digit as payment ID).
- There are options “Close Amount” and “Open Amount” but not all banks support it.
- There are “On Us” and “Off Us” process type.
- The merchant needs to provide an URL to be called by the payment gateway system so they can receive notification payment when the customer does the payment.
- If the customer uses Bank Transfer payment and inputs the payment code in the different Bank system, not using the Bank that owns the payment code, then likely the customer will get a switching transfer fee.
- The payment notification will travel across many parties with many policies, if there is a problem in the payment, we need to check every party that involved. Example payment from ATM in Bank A uses switching company to travel to Bank B then go to payment gateway and finally arrive in merchant, there will be like 6 hops for this payment: ATM — Bank A — Switching — Bank B — Payment Gateway — Merchant.
- Because the process travels across many parties, the waiting time on the last hop will be short. So the payment gateway (or merchant if the inquiry process is done by them) have to respond very fast, usually, we expect less than 5 seconds.
- Normally Bank or Convenience Store will send the mutation report on the next day, T+1. So we can only do the reconciliation for all payment on T+1. Unless the Bank or Convenience Store have a function where we can call to check the transactions. But it will be tricky, because this payment is a 2 step process and there is an expiry that can be set for a long time, example 1 month, so roughly we have to check the status of that transaction for 1 month.
- The default rules for a payment timeout issues between Bank or Convenience Store to the payment gateway or merchant is to make the transaction success. So we need to have a good SOP and reconciliation process on the next day to make sure all transaction can be matched with the Bank or Convenience Store report.
- There is limitation rule on the amount we can pay in Bank or Convenience Store. On Bank related to the account type, card limit or transfer limit. On Convenience Store related to how much cash the store can accept.
- Because the payment is a push payment model, where the payment comes from a user using their Bank account or using cash in the Convenience Store, we can say this payment is always genuine and valid.
With the upcoming NPG, probably there will be changes in how people do the payment. It should make easier for people to do the payment with just 1 step. Or maybe people still like to do this Bank Transfer and Convenience Store payment because they already familiar with this and everyone know how. It depends on how the government, banks, payment gateways and all parties that related to payment process can educate the people of how to do the new technology in payment.
This article also post on my Linkedin pulse: https://www.linkedin.com/pulse/paystory-bank-transfer-convenience-store-payment-sandi-fajariadi/