=== Indonesian Banks for WooCommerce ===
Contributors: walterpinem
Donate link: https://www.paypal.me/WalterPinem
Tags: woocommerce, bank transfer, indonesia, payment, payment gateway
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Accept manual bank transfer, e-wallet, and QRIS payments in your WooCommerce store. No fees, no registration, money straight into your own account.

== Description ==

**Zero transaction fees. Money straight into your own account. Live in five minutes. No registration with anyone.**

**[Indonesian Banks for WooCommerce](https://www.onlinestorekit.com/indonesian-banks-for-woocommerce/)** turns manual bank transfer into a payment method that feels almost as smooth as a payment gateway. Your customer picks a bank at checkout, sees your account details and a unique payment code, transfers the exact amount, and you confirm it against your bank statement. That is the whole flow: no API keys, no merchant onboarding, no KYC paperwork, no settlement delay, and nobody taking a cut.

This plugin has served Indonesian stores since 2018. Version 1.0.0 is a complete rebuild for modern WordPress and WooCommerce, with every bank, e-wallet, and QRIS method included.

= Baca panduan lengkap dalam Bahasa Indonesia =

Panduan lengkap plugin ini dalam Bahasa Indonesia; cara memasang, mengatur rekening bank dan e-wallet, mengaktifkan kode pembayaran unik, sampai menerima pembayaran transfer di toko WooCommerce Anda, tersedia di [Seni Berpikir](https://www.seniberpikir.com/indonesian-banks-plugin-woocommerce-toko-online-indonesia/).

= Who this is for =

Small business owners who do not need, cannot yet justify, or are simply not ready for a payment gateway integration. Low order volume, funds that must land instantly in your own account, and no appetite for per-transaction fees.

= What you get =

* **40+ payment methods, all free.** Commercial banks: Mandiri, BNI, BRI, BCA, BTN, CIMB Niaga, Danamon, PermataBank, Panin, Maybank, UOB, OCBC, Mega, Sinarmas, BTPN, KB Bank, and HSBC Indonesia. Syariah banks: BSI, Muamalat, BCA Syariah, Mega Syariah, BTPN Syariah, and Aladin Syariah. Regional development banks (BPD): Bank DKI, BJB, Jateng, Jatim, and BPD Bali. Digital banks: Jago, SeaBank, blu by BCA Digital, Neo Commerce, Allo Bank, Krom, Jenius, digibank by DBS, and LINE Bank.
* **e-Wallets**: GoPay, OVO, DANA, LinkAja, and ShopeePay as manual transfer methods, with a phone number as the destination instead of an account number.
* **Static QRIS**: upload the QRIS image from your own bank or e-wallet app and let customers scan it at checkout.
* **Custom bank builder**: create unlimited payment methods for any bank or destination that is not on the list, with your own name, logo, and instructions.
* **Unique payment code**: add (or subtract) a small random amount so every transfer is uniquely identifiable in your statement. Configurable range and label, per-method overrides, and the code stays identical from checkout to the thank-you page to the email to the saved order.
* **Multiple accounts per method**, shown on the order confirmation page, in customer emails, and in the customer's account area.
* **Copy-to-clipboard buttons** for the account number and the exact amount, so customers transfer the right number.
* **Export and import your setup**: running more than one store? Configure one, download the file, and import it on the rest instead of retyping account numbers.
* **Fully translated into Indonesian**, and ready for other languages.
* **Works everywhere**: full support for both the Checkout block and the classic `[woocommerce_checkout]` shortcode, and for High-Performance Order Storage (HPOS).

= How is this different from Midtrans, Xendit, Doku, or Tripay? =

Those are payment gateways, and they are good at what they do: virtual accounts, dynamic QRIS, automatic verification, settlement infrastructure. They also involve registration, verification, per-transaction fees, and settlement delays.

This plugin is a different approach, not a worse copy of theirs. Money moves directly from your customer to your own bank account, you keep every rupiah, and you can be selling within five minutes of activating the plugin. 

The trade-off is honest: you verify payments yourself. When your order volume outgrows manual checking, a real payment gateway is a perfectly good answer, and you can move on with your customer data intact.

= When checking transfers by hand starts to cost you time =

Nothing above is limited, time-bombed, or held back. This plugin is finished: every bank, every e-wallet, QRIS, unique payment codes, multiple accounts, import and export, all of it, free, with no upsell inside the settings screens.

What it does not do is the work *after* the customer clicks Bank Transfer. You still open your banking app, read down the statement, find the order that matches each figure, and mark it paid. At a few orders a day that is fine. At fifty it is an hour, every day, and it is the part that goes wrong when you are busy.

There is a paid add-on for that part: **Indonesian Banks for WooCommerce Pro**, a pending-transfers screen, reminder emails and auto-cancel, a *konfirmasi pembayaran* form, and matching payments against a CSV exported from your banking app or a feed from a mutation service. It installs alongside this plugin and uses it; it does not replace it, and this plugin keeps taking the money either way.

If manual checking suits your volume, you need nothing else. [Read what the Pro add-on does](https://www.onlinestorekit.com/indonesian-banks-for-woocommerce/).

= Upgrading from an older version =

Version 1.0.0 is a rewrite, but your setup is safe. Bank Mandiri, BNI, and BRI keep their identifiers, their titles, their account details, and their instructions. Your unique payment code settings, including the exact behavior you have today, carry over automatically. A store updating from 0.1.4 needs zero reconfiguration.

= Coming from another plugin? =

If your database still holds settings from Indobe or WooWIB, an import card appears under **Indonesian Banks → Tools** (and a **Tools → Indonesian Banks Import** screen alongside it). It shows you exactly what it found and what it would do, and imports nothing until you confirm. Your old plugin's data is never deleted. If neither plugin left anything behind, the tool stays out of your way entirely.

== Installation ==

1. Install and activate WooCommerce first.
2. Install this plugin from **Plugins → Add New** by searching for "Indonesian Banks", or upload the zip through **Plugins → Add New → Upload Plugin**.
3. Activate the plugin.
4. Go to the **Indonesian Banks** menu, switch on the banks or e-wallets you accept, and click Configure on each to set your account details and instructions.
5. Optional: turn on the unique payment code under **Indonesian Banks → Payment Code**. It works in whole rupiah, so your store currency needs to be IDR for this part.

Everything is also available under WooCommerce → Settings → Payments if you prefer that screen. Both edit the same settings.

== Frequently Asked Questions ==

= Does this plugin process payments or connect to a bank API? =

No, and that is the point. It presents your own account details, tracks what the customer should transfer, and helps you match incoming transfers. The money moves directly between your customer's bank and yours. There is no API, no third-party service, and no account to register anywhere.

= What is a unique payment code? =

A small random amount (by default between 100 and 999 rupiah) added to the order total. If two customers both order Rp 150.000, one is asked to transfer Rp 150.324 and the other Rp 150.881, so you can tell instantly which transfer belongs to which order. You can also configure it to subtract instead of add, change the range and the label, and turn it on or off per payment method.

= I heard the payment code used to change between the checkout page and the confirmation email. =

That was a real bug in the old version, and it is fixed. The code is now generated once per shopping session, and the exact value is stored on the order when it is placed. The checkout page, the order confirmation page, the customer email, the customer's account area, and the admin order screen all show the same number.

= Does it work with the new Checkout block? =

Yes. Both the block-based Cart and Checkout and the classic `[woocommerce_checkout]` shortcode are fully supported, including the unique payment code in the order summary.

= Is it compatible with High-Performance Order Storage (HPOS)? =

Yes, and it is a real declaration: all order data is read and written through the WooCommerce order API, so the plugin works with HPOS on, off, or in compatibility mode.

= Why don't the payment methods come with bank logos? =

Bank and e-wallet logos are trademarks owned by the banks. WordPress.org requires everything bundled inside a plugin to be licensed under the GPL, and a bank's logo cannot be, so shipping them here would not be legitimate no matter where they came from.

Instead, every payment method has a **Logo** setting where you can upload one yourself. Most banks publish their logo on their own website or in a brand guidelines page, and as the merchant displaying the bank you actually bank with, you are on much firmer ground than we would be distributing it to every store. Use a PNG with a transparent background, around 160 × 48 pixels; the plugin scales it to fit the checkout, so a larger file is fine. WordPress does not accept SVG uploads, and this plugin does not change that, SVG files can carry scripts.

Without a logo, the method simply shows its title, which is perfectly clear to customers.

= Can I add a bank that is not on the list? =

Yes. Go to **Indonesian Banks → Custom Banks**, add it by name, then configure its title, logo, account details, and instructions like any built-in method. There is no limit on how many you create.

= Does it support currencies other than IDR? =

The payment methods themselves work in any currency. The unique payment code works in whole rupiah, so it stays dormant on non-IDR stores and tells you why.

= I run several stores. Do I have to set each one up by hand? =

No. Configure one store, then go to **Indonesian Banks → Tools** and download the configuration file. On every other store, upload it in the same place. Payment methods, account details, custom banks, and the payment code settings all come across. Logos and QRIS images stay behind, because they live in each store's own media library, so set those once per store.

= Is anything held back for a paid version? =

No. Every payment method, the unique payment code, multiple accounts, custom banks, QRIS, import and export, all of it is here, complete, with no limits and no expiry. There is no upsell inside the settings screens.

There is a separate paid add-on, Indonesian Banks for WooCommerce Pro, and it adds a different job rather than unlocking this one: it handles the reconciliation work after checkout, chasing unpaid orders, taking payment confirmations, and matching bank statement lines to orders. This plugin does not need it and does not change if you never install it.

= Where do I get help? =

Open a thread in the [plugin's support forum](https://wordpress.org/support/plugin/indonesian-banks-for-woocommerce-free-version/). That is usually the fastest route, and the answer stays public for the next person with the same question. You can also reach us through [Online Store Kit support](https://www.onlinestorekit.com/support/).

Either way, it helps to include your WordPress and WooCommerce versions, which payment method is involved, and what you expected to happen.

== Screenshots ==

1. Every payment method in one place, with a switch to turn each one on
2. Configuring a bank: title, logo, description, account details, instructions
3. Unique payment code settings
4. Bank methods on the checkout page
5. Order confirmation with the exact amount to transfer and copy buttons

== Indonesian Banks for WooCommerce Pro ==

The free plugin stays free and complete. Nothing here is a trial, and nothing is held back to nudge you toward paying.

There is a separate paid add-on for the work that starts after checkout: confirming the money actually landed. That is the part that quietly eats an hour a day once orders pick up, and the part that slips first when you get busy. 

**Indonesian Banks for WooCommerce Pro** puts every unpaid order on one Pending Transfers screen, sends a reminder and can cancel the orders nobody ever pays, gives customers a *konfirmasi pembayaran* form to report a transfer, and matches your bank statement against waiting orders from a CSV, a pasted list, or a webhook.

It installs next to this plugin and builds on it. Your checkout does not change, your payment methods stay as they are, and this plugin keeps taking the money whether or not you add the Pro side. If checking transfers by hand suits your volume, you already have everything you need right here.

* [See what Pro does and what it costs](https://www.onlinestorekit.com/indonesian-banks-for-woocommerce/)
* [Get Indonesian Banks for WooCommerce Pro](https://www.onlinestorekit.com/kit/indonesian-banks-for-woocommerce-pro/)
* [Read the documentation](https://www.onlinestorekit.com/docs/ibfw/)
* [Pro changelog](https://www.onlinestorekit.com/changelog/indonesian-banks-for-woocommerce-pro/)
* [Free plugin changelog](https://www.onlinestorekit.com/changelog/indonesian-banks-for-woocommerce/)

== Changelog ==

= 1.1.0 =
* [NEW] Every settings tab now has its own entry in the admin menu, so you can jump straight to one instead of loading the page and clicking across. More Plugins is deliberately left out of that menu, and now sits last on the tab strip. It configures nothing, so it should not crowd the settings you came for.
* [FIX] The "copy the exact amount" button could place a truncated figure on the clipboard when the amount was not a whole number.
* [FIX] On the Tools tab, the file picker for importing settings now matches the rest of the plugin instead of showing the browser's own control, and the checkbox beside it lines up with the sentence next to it.
* [FIX] The bundled Indonesian translation now loads. The plugin relied on WordPress finding it from the plugin header alone, which it does not do, so Indonesian users saw English on the front end.
* [DEV] New extension points for add-ons: the ibfw_after_email_instructions action, the ibfw_expected_amount filter, and IBFW_Plugin::owns_order().

= 1.0.0 =
Complete rebuild for modern WordPress and WooCommerce.

* [NEW] 34 additional banks: BCA, BTN, CIMB Niaga, Danamon, PermataBank, Panin, Maybank, UOB, OCBC, Mega, Sinarmas, BTPN, KB Bank, HSBC Indonesia, BSI, Muamalat, BCA Syariah, Mega Syariah, BTPN Syariah, Aladin Syariah, Bank DKI, BJB, Jateng, Jatim, BPD Bali, Jago, SeaBank, blu by BCA Digital, Neo Commerce, Allo Bank, Krom, Jenius, digibank by DBS, and LINE Bank.
* [NEW] e-Wallet methods: GoPay, OVO, DANA, LinkAja, ShopeePay.
* [NEW] Static QRIS method using your own QRIS image from the media library.
* [NEW] Custom bank builder for unlimited user-defined payment methods.
* [NEW] A dedicated Indonesian Banks menu holding every payment method, the payment code, custom banks, and tools in one place. It is the same data as WooCommerce -> Settings -> Payments, so either screen works.
* [NEW] Full Cart and Checkout block support.
* [NEW] High-Performance Order Storage (HPOS) compatibility.
* [NEW] Unique payment code: configurable range, add or subtract mode, per-method overrides.
* [NEW] Copy-to-clipboard buttons for the account number and exact amount.
* [NEW] Payment instructions on the customer's account order view.
* [NEW] Bank details, unique code, and expected amount on the admin order screen.
* [NEW] Per-method order status after checkout.
* [NEW] Upload your own logo per payment method, shown at checkout.
* [NEW] Export and import the whole configuration as a file, for running several stores from one setup. Uploaded logos and QRIS images stay with their own store.
* [NEW] Import tool for settings left behind by other Indonesian bank transfer plugins. It only appears when there is something to import.
* [NEW] Indonesian (id_ID) translation.
* [NEW] Optional debug logging and a WooCommerce status report section.
* [NEW] Optional data cleanup on uninstall, off by default.
* [FIX] The unique payment code no longer changes between the checkout page and the order confirmation. It is generated once per session and frozen onto the order.
* [FIX] Removed a duplicate stock reduction that could double-decrement inventory on modern WooCommerce.
* [FIX] Corrected handling of order data that is deprecated in current WooCommerce versions.
* [SECURITY] Full input sanitization and output escaping pass across settings, checkout, emails, and admin screens.
* [DEV] Payment methods are a filterable registry rather than one class per bank, so adding a bank is a single ibfw_methods entry. Documented hooks and filters throughout.

= 0.1.4 - January 1, 2019 =
* [NEW] Option to change title for Payment Code
* Code cleaned up

= 0.1.3 - December 26, 2018 =
* Compatibility with WordPress 5.0.2 - tested
* Compatibility with WooCommerce 3.5.3 - tested
* Code cleaned up

= 0.1.2 - December 15, 2018 =
* [NEW] Option to enable / disable Unique Payment Code
* [Improvement] Move Unique Payment Code Option into Advanced tab setting panel
* Compatibility with WordPress 5.0.1 - tested
* Code cleaned up

= 0.1.1 - December 6, 2018 =
* [NEW] Unique Payment Code (3 digits)
* Compatibility with WooCommerce 3.5.2 - tested
* Code cleaned up

= 0.1 - May 11, 2018 =
* Initial Release

== Upgrade Notice ==

= 1.0.0 =
Major rebuild for WordPress 6.5+ and WooCommerce 8.2+, with HPOS and Checkout block support, 40+ banks and e-wallets, and static QRIS. Your existing gateways, account details, and payment code settings carry over with zero reconfiguration.
