Indonesian Banks for WooCommerce
Take bank transfer, e-wallet and QRIS payments in your WooCommerce store. Money lands in your own account, you keep every rupiah, and there is nothing to register for.
40+ payment methods included. Works with the Checkout block and HPOS.
Take payments in five minutes, keep every rupiah.
Your customer picks a bank at checkout, sees your account details and a unique payment code, and transfers the exact amount to you. No API keys, no merchant onboarding, no KYC paperwork, no settlement delay, and nobody taking a percentage. When checking those transfers by hand starts to cost you an hour a day, the Pro add-on does that part for you.
Manual transfer, done properly
Six things that make manual transfer feel a lot less manual.
Commercial, syariah, regional and digital banks, plus GoPay, OVO, DANA, LinkAja and ShopeePay as manual transfer destinations.
Add or subtract a small random amount so every transfer is identifiable in your statement. The code is frozen onto the order and never changes between checkout and the email.
Upload the QRIS image your bank or wallet app already gave you and let customers scan it. No provider account needed.
Any destination that is not on the list becomes a payment method, with your own name, logo and instructions.
Hold more than one account for a bank and show them at checkout, in emails and in the customer account area.
Configure one store, download the file, import it on the rest instead of retyping account numbers.
The details, everywhere they help
The same account numbers and the same exact figure, from checkout through to the order you verify in your dashboard.
One settings screen
Payment methods, the payment code, custom banks and tools sit under a single Indonesian Banks menu. It is the same data as WooCommerce, Settings, Payments, so either screen works.
Reminders, Confirmation and Incoming Payments appear in the same strip. Nothing is configured twice.
Export the configuration to a file and import it on your other stores. Uploaded logos and QRIS images stay with their own store.
For the customer
For you
Copy buttons on
Emails that go out
Where the figure comes back
Confirming payments over WhatsApp?
OneClick Chat to Order puts a WhatsApp button across your store, so customers send the transfer receipt in the same chat they ordered from.
See the plugin →Built for how Indonesian stores actually sell
Nothing held back
Every bank, every e-wallet, QRIS, unique payment codes and import and export are free, with no upsell inside the settings screens.
Your money never leaves your bank
No third party holds the funds and no settlement window applies. The transfer is between your customer and you.
Written for Indonesian banking
Statement dates read day-first, amounts read with dots as thousands separators, and the payment code survives a rounded figure.
Made to be extended
A filterable method registry, documented hooks, and an add-on that uses them rather than forking the plugin.
Nothing automatic happens unseen
Statement matching starts in report-only mode and changes nothing until you agree with what it reports. Customers see the cancellation deadline before it arrives, and every decision the matcher makes is logged.
Free and Pro share one screen
The add-on puts its tabs beside the free plugin's rather than being a second plugin to learn. Same methods, same accounts, nothing configured twice.
Ready to take transfers?
Install the free plugin from your dashboard and switch on the banks you actually use. Five minutes, no registration, no fees.
Get Started
Prefer watching? The setup walkthrough covers install to first order in under ten minutes.
Where the free plugin stops
Everything that takes the money is free and stays free. The paid add-on is only about the work that happens after the customer clicks Bank Transfer.
| Feature | Free | Pro |
|---|---|---|
| Bank, e-wallet and QRIS methods at checkout | 43 | 43 |
| Unique payment code, custom banks, import and export | Included in Free | Included in Pro |
| Pending transfers on one screen, with bulk settle | Not included in Free | Included in Pro |
| Reminder emails and automatic cancellation | Not included in Free | Included in Pro |
| Payment confirmation form and WhatsApp button | Not included in Free | Included in Pro |
| Match a bank statement by CSV, paste or webhook | Not included in Free | Included in Pro |
| Dynamic QRIS with the amount included | Not included in Free | Included in Pro |
| Dokan and WCFM vendor accounts | Not included in Free | Included in Pro |
Pro is an add-on. It needs the free plugin installed and running, version 1.1.0 or newer.
When checking transfers by hand stops being free
Indonesian Banks for WooCommerce Pro takes over the work after checkout: chasing the customers who forget, letting them tell you they have paid, and matching what arrived in your account against what is still waiting.
One site, one year of updates and support. Multi-site and agency licences are available.
Renews yearly. If a licence lapses nothing automatic runs, your orders are untouched, and checkout carries on with the free plugin.
Most Indonesian online stores do not start with a payment gateway.
They start with a bank account, a WhatsApp number, and a customer who asks “transfer ke mana, kak?”
That works.
It is how an enormous amount of commerce in Indonesia actually happens.
What does not work is doing it by hand inside WooCommerce, pasting account numbers into the order notes, answering the same question forty times a week, and squinting at a bank statement trying to work out which of the three transfers for Rp 150.000 belongs to which order.
Indonesian Banks for WooCommerce closes that gap.
Your customer picks a bank at checkout, sees your account details and an amount that is unique to their order, and transfers it.
You match it against your statement and ship.
No API keys, no merchant onboarding, no KYC paperwork, no settlement delay, and nobody taking a percentage.
The plugin has served Indonesian stores since 2018.
Version 1.0.0 is a complete rebuild for modern WordPress and WooCommerce.
What is Indonesian Banks for WooCommerce?
![]()
Indonesian Banks for WooCommerce is a free WooCommerce payment plugin that lets Indonesian stores take manual bank transfer, e-wallet and QRIS payments directly into their own accounts, with no gateway registration and no per-transaction fee.
Your customer picks a bank at checkout, sees your account details and a unique payment code, and transfers the exact amount to you.
The situation it removes is familiar to anyone who has sold online in Indonesia without a gateway.
Account numbers live in a text field somewhere, or in the order notes, or in a screenshot the customer has to squint at.
Two customers order the same product on the same afternoon and pay the same figure, and now your statement has two identical credits and no way to tell which order each belongs to.
Somebody transfers, nobody notices for a day, and the customer messages you asking whether the order went through.
The plugin has served Indonesian stores since 2018.
Version 1.0.0 was a complete rebuild for modern WordPress and WooCommerce, and as of August 2026 the free edition is at 1.1.0 with 43 payment methods in the registry.
What the free edition covers

Everything that takes money is free and has no expiry.
That includes commercial banks such as Mandiri, BNI, BRI, BCA and CIMB Niaga, syariah banks including BSI and Muamalat, regional development banks such as Bank DKI and BJB, and digital banks including Jago, SeaBank and blu by BCA Digital.
GoPay, OVO, DANA, LinkAja and ShopeePay appear as manual transfer destinations with a phone number rather than an account number.
Static QRIS is included, using the QRIS image your own bank or wallet app already gave you.
If a destination is not on the list, the custom bank builder turns it into a payment method with your own name, logo and instructions.
How does the unique payment code actually work?

The unique payment code adds or subtracts a small random amount from the order total, so each transfer arrives in your statement as a figure no other waiting order shares.
An order for Rp 150.000 becomes Rp 150.900, and the next one becomes Rp 150.313.
That difference is what lets you match a credit to an order without asking the customer for a receipt.
Two details matter more than the idea itself, and both are places where a naive implementation goes wrong.
The code is generated once and then frozen onto the order.
It does not change between the checkout page, the order received page, the confirmation email and the order you open in your dashboard a week later.
A code that drifts between those screens is worse than no code at all, because the customer transfers one figure while your records expect another.
The range and the label are yours to set, and can be overridden per method.
A store whose orders cluster around round numbers wants a wider range than a store selling at odd prices already.
Where the details appear
The same account numbers and the same exact figure follow the order through every screen either party sees.
For the customer that means checkout, the order received page, the confirmation email and the My Account order view, each with copy buttons on the account number and on the amount so they transfer the right figure rather than retyping it.
For you it means the admin order screen, the order list and the WooCommerce status report.
What does Indonesian Banks for WooCommerce Pro add?
![]()
Indonesian Banks for WooCommerce Pro is a paid add-on covering the work after checkout: reminder emails and automatic cancellation, a payment confirmation form, statement matching by CSV, paste or webhook, a daily summary email, dynamic QRIS, down payments, per-method rules, and multi-vendor support for Dokan and WCFM.
It requires the free plugin at 1.1.0 or newer and does not replace it.
The reason to reach for it is time, not capability.
The free plugin takes the money perfectly well forever.
What it does not do is the part that starts once the customer clicks Bank Transfer: opening your banking app, reading down the statement, finding the order that matches each figure, and marking it paid.
At a few orders a day that is a small task.
At fifty a day it is an hour, every day, and it is the part that goes wrong when you are busy.
Matching a bank statement
Three routes in, all governed by the same rules: an exact amount, exactly one waiting order, never the same credit twice, and never a guess between two candidates.
You can post credits from a bank mutation service to a webhook, upload a CSV exported from your banking app, or paste a column of figures straight from your statement.
Automatic matching starts in report-only mode.
It records what it would have done and changes nothing, so you can watch it for a few days before you let it settle anything.
The plugin tells you to do exactly that on the settings screen.
Credits are matched only against orders placed within a look-back window you control, and never against an order placed after the money arrived.
A figure that has no match inside that window says so and names the window, rather than claiming no such order exists.
Chasing and confirming
A reminder email goes out after a number of hours you choose, and orders nobody ever paid for can cancel themselves and release their stock.
Customers are shown the deadline on the order page and in their email, so nothing is cancelled without warning.
Customers can also tell you first.
A konfirmasi pembayaran form on your own site takes an optional proof-of-transfer upload, and a WhatsApp button opens a chat with the order number, amount and method already written.
Confirmed orders are flagged where you will see them.
How do you set it up?
![]()
Installing Indonesian Banks for WooCommerce and taking your first transfer takes about five minutes, with no account to create anywhere.
Install the plugin, open the Indonesian Banks menu, switch on the banks you use and enter each account number, then switch on the unique payment code and place a test order.
The steps below use the real menu names, in the order you meet them.
- Install Indonesian Banks for WooCommerce from Plugins, Add New and activate it.
- Open Indonesian Banks in the admin menu. Every payment method sits on the Payment Methods tab. This is the same data as WooCommerce, Settings, Payments, so either screen works.
- Switch on the banks and e-wallets you actually use, and enter the account number and account holder name for each. Add more than one account to a method if you want them all shown.
- On the Payment Code tab, switch on the unique payment code and set the range and the label. This is the setting that makes matching possible later.
- Place a test order and check that the figure on the order received page, in the email and on the admin order screen all agree.
For Pro, install and activate the free plugin first, upload the add-on through Plugins, Add New, Upload Plugin, and enter your licence key on the License tab under Indonesian Banks.
The new settings appear as extra tabs in that same screen.
A full walkthrough in Indonesian, covering installation through to receiving your first transfer, is published at Seni Berpikir.
Who is this for, and who should skip it?
This suits a store that sells in rupiah on its own WooCommerce site, takes payment by bank transfer, and has enough orders that checking them by hand has stopped being free.
It suits it least when a gateway is already working, or when order volume is high and values are low.
Three situations where it fits well:
- High-ticket, made-to-order businesses. Furniture, custom fashion, catering, wedding and event services, travel packages. Few orders, large values, and deposits already part of how the business works. A percentage fee on a Rp 15 juta order is real money.
- Wholesale and grosir sellers. B2B pricing and invoice-shaped ordering, where transfer is the norm anyway.
- Community and institutional sellers. Pesantren, koperasi, schools and organisations, where transfer is culturally expected and the entity often will not do gateway onboarding.
And the cases where you should not buy, which are worth stating plainly:
- You already run Midtrans, Xendit or Doku happily. Verification is solved. This would solve it a second time.
- High volume, low value retail. At a thousand small orders a month, a gateway’s per-transaction cost buys you something worth having, which is never thinking about reconciliation again.
- You sell only on marketplaces. There is no WooCommerce checkout to reconcile.
- You do not sell in rupiah. The unique payment code works in whole rupiah.
How does it compare to a payment gateway, or to doing it by hand?
A payment gateway buys you automatic verification and charges for it on every transaction, forever.
Indonesian Banks for WooCommerce moves the money directly and asks you to verify it yourself.
The Pro add-on automates that verification once, for a yearly licence, while the money keeps going straight to your bank.
The comparison that matters is not feature counts, it is what each approach costs and what it asks of you.
| Approach | Fees | Settlement | Onboarding | Who verifies |
|---|---|---|---|---|
| Manual transfer by hand | None | Immediate | None | You, in your banking app |
| Indonesian Banks for WooCommerce (free) | None | Immediate | None | You, with a unique figure per order |
| Indonesian Banks for WooCommerce Pro | Yearly licence | Immediate | None | The plugin, from your statement |
| Payment gateway | Per transaction | Next day or later | Registration and verification | The gateway |
Gateways are good at what they do, and the registration barrier is lower than it used to be.
Several now onboard businesses with no legal entity.
The reasons stores still choose direct transfer are the per-transaction cost on large orders, settlement landing in your account immediately rather than the next day, and the funds never sitting with a third party in the meantime.
Against doing it by hand with a plain bank transfer field, the free plugin adds the unique payment code, copy buttons, several accounts per method, and the details appearing in every email and screen automatically.
That is the difference between a statement you can match and a statement you have to guess at.
What does it require?
The free plugin needs WordPress 6.5 or newer, WooCommerce 8.2 or newer and PHP 7.4 or newer.
Indonesian Banks for WooCommerce Pro needs all of that plus the free plugin at version 1.1.0 or newer.
Both are compatible with High-Performance Order Storage and with the Checkout block.
| Requirement | Free | Pro |
|---|---|---|
| WordPress | 6.5 or newer | 6.5 or newer |
| WooCommerce | 8.2 or newer | 8.2 or newer |
| PHP | 7.4 or newer | 7.4 or newer |
| Indonesian Banks for WooCommerce | Not applicable | 1.1.0 or newer |
| Store currency | IDR for the payment code | IDR for the payment code |
| Checkout block | Supported | Supported |
| Classic checkout shortcode | Supported | Supported |
| High-Performance Order Storage | Supported | Supported |
| Multisite | Supported | Licence is per site |
Multi-vendor stores running Dokan or WCFM are supported by Pro, which shows each vendor’s own bank details on their own orders.
An order spanning two vendors falls back to the shop’s account rather than paying one vendor for both.
The questions people ask before switching their checkout
The short answers live in the FAQ above.
The five below need a paragraph rather than two sentences: what happens when two customers pay the same amount, whether the plugin works outside Indonesia, what leaves your server, what the last release changed, and where to get help.
They are the objections that come up most often.
What happens if two customers pay the same amount?
With the unique payment code switched on, they do not.
That is the whole purpose of it: the code makes each waiting order’s expected figure different from every other waiting order’s.
Without the code, two identical orders produce two identical credits, and no software can tell them apart from the statement alone.
If you switch the code off, matching in Pro falls back to whatever else it can use, which is the destination account and the look-back window, and it refuses to guess between two candidates rather than settling the wrong one.
Can I use it for a store that is not in Indonesia?
The payment methods and the workflow are not restricted, but the unique payment code works in whole rupiah, and the statement reader is written for Indonesian conventions: dates the day-first way round, dots as thousands separators, and Indonesian and English column names in a CSV.
A store selling in another currency can use the bank transfer methods, but the code and the matching are built around the rupiah.
Is anything sent to your servers?
No bank credentials are stored or transmitted by either edition, and nothing polls your bank.
Pro receives credits only where you point a mutation service or your own script at its webhook, or where you upload a CSV or paste figures yourself.
The paid edition contacts the licence server to check that a licence is valid, and nothing else.
What did the last release change?
The current versions as of August 2026 are 1.1.0 for the free plugin and 1.0.2 for Pro.
Every release is listed, with what changed and what it means for a store that already installed it, on the Indonesian Banks for WooCommerce Pro changelog.
Where do I get help?
Free plugin questions belong in the wordpress.org support forum, where the answer stays public for the next person with the same problem.
Licensed Pro customers can reach us through Online Store Kit support.
If you are already taking transfers and confirming them over WhatsApp, OneClick Chat to Order puts a WhatsApp button across your store so the receipt arrives in the same chat the order came from.
Start with the free plugin
Install it, switch on the banks you actually use, and take a test order through your own checkout to see the figure agree across all three screens.
That test tells you more about whether this fits your store than any description here can.
If the counting later becomes the part of your day you resent, the Pro add-on is there and it installs alongside without changing anything about how you take money.
If it never does, you need nothing else, and the free plugin stays exactly as capable as it is today.
Questions before you install
What store owners ask before switching their checkout over.
No. Indonesian Banks for WooCommerce shows your own bank account details at checkout and the customer transfers to you directly. There is no registration, no merchant onboarding and no KYC step, because no third party is involved in moving the money.
The unique payment code adds or subtracts a small random amount from the order total, so every transfer arrives as a figure no other waiting order shares. That is what lets you tell two identical orders apart in your bank statement. The range and the label are configurable, and the code can be overridden per method.
No. All 43 payment methods, the unique payment code, the custom bank builder, multiple accounts per method, static QRIS, and configuration export and import are in the free plugin with no expiry and no usage cap. The paid add-on covers work that happens after checkout, not the checkout itself.
Pro adds a pending transfers screen, reminder emails with optional automatic cancellation, a payment confirmation form with proof upload, a WhatsApp confirmation button, statement matching by CSV, paste or webhook, a daily summary email, dynamic QRIS, down payments, per-method rules and fees, Dokan and WCFM vendor accounts, and a REST API with WP-CLI commands.
Yes. Pro is an add-on and requires the free plugin at version 1.1.0 or newer. It uses the free plugin's payment methods and gateway logic rather than replacing them, so only one piece of code ever handles taking money.
Only if you switch that on. Automatic matching starts in report-only mode, where it records what it would have done and changes nothing. Marking orders paid is a separate setting you move to after watching it.
No. Dynamic QRIS in Indonesian Banks for WooCommerce Pro is generated from the static QRIS code your bank or e-wallet already issued, with the order amount written into it. No third party is involved and there is no per-transaction fee.
Yes. Both the Checkout block and the classic checkout shortcode are supported, and High-Performance Order Storage is declared compatible. Orders are read and written only through the WooCommerce order API.
Nothing automatic runs: no reminder emails, no automatic cancellation and nothing settling orders from a bank feed. Existing orders and recorded data are untouched, checkout carries on with the free plugin's behaviour, and the list of waiting transfers stays visible and exportable.
Something else on your mind? Open a support request