Midtrans Payment
$39.00

Your Checkout Speaks Visa. Indonesia Speaks QR Code.

GoPay. ShopeePay. QRIS. Bank transfers. Cash at the corner store. Midtrans puts every one of them on your Joomla ecommerce checkout — so Indonesian shoppers stop bouncing off a wall built for someone else's country.

15
Local payment methods shoppers already use
7
Order-screen payment actions — zero dashboard trips
2
Ways to check out — hosted screen or your own page
0
Raw card numbers ever stored on your server

How Indonesia Actually Pays — Built Into Your Checkout

Every method your shoppers already trust. Every action you need, right from the order screen.

E-Wallets and QR, Handled

GoPay, ShopeePay, and QRIS at checkout — the payment apps already open on your shopper's phone become a real way to buy from you.

Bank Transfer, Their Way

Virtual accounts across BCA, BNI, BRI, CIMB, Permata, and more — the shopper who trusts their banking app gets a number and transfers, no card required.

Pay Cash at the Corner Store

Alfamart and Indomaret codes let the shopper with no bank account walk in and pay cash against a barcode. Sale saved, no bank required.

Card Numbers Never Touch Your Server

The on-site card form tokenizes in the shopper's browser before anything reaches your store. Your liability doesn't grow just because you take cards.

Authorize Now, Capture When You Ship

Reserve the money at checkout and take it for real only when the order actually goes out the door — perfect for made-to-order and pre-order goods.

The Full Order Lifecycle, One Screen

Capture, void, expire, approve, deny, refund, and refresh status — every payment action lives right on your order, not in someone else's dashboard.

Refunds That Check Their Own Math

Every refund is checked against the real remaining balance first — never more than what's left, never sent twice, even if the button gets clicked again.

Saved Cards for Repeat Shoppers

Signed-in customers store a card once and never re-type it again — faster checkout every single time they come back.

Subscriptions That Bill Themselves

Recurring orders charge automatically on whichever schedule you choose — your store's calendar or the gateway's, never both at once.

Pick Your Checkout: Hosted, or Built Into Your Page

Two ways to take payment, and the choice decides which features unlock. Hand the whole screen to Midtrans for the fastest setup, or build the card form directly into your own checkout for tighter control and repeat-customer conveniences.

  • Hosted screen covers every activated method automatically
  • On-site card form unlocks saved cards and subscriptions
  • Popup, redirect, or embedded — you choose how the screen opens

Manage Every Payment Without Leaving Your Order Screen

Capture an authorized payment when you're ready to ship. Void it before it settles. Expire a virtual account nobody ever paid. Approve or deny a transaction flagged for fraud review. Refund in full or in part — with every action checking the live status first, so a stale button can never push through a change the gateway would reject.

  • Seven actions, one screen, zero dashboard logins
  • Refund math checked against the real balance every time
  • Status refresh pulls the current answer on demand

Real-World Use Cases

A growing Jakarta customer base kept hitting a card-only checkout and quietly bouncing. Switching to the hosted checkout and activating GoPay, ShopeePay, QRIS, and the major bank transfers ends the pattern overnight — local shoppers pay the way they already pay everywhere else, without ever leaving the checkout page.

A custom PC shop with a two-week build time doesn't want to charge a card before the unit ships. Authorize-only reserves the funds at checkout, the build begins, and a staff member captures the payment with one click the day the unit leaves the warehouse. No money moves until the customer has something to show for it.

A monthly skincare-box seller wants recurring billing without building it themselves. New subscribers save a card once at signup, and the gateway's own subscription engine charges the renewal automatically every month, on schedule, with zero manual work from the store.

Stop Losing Indonesian Shoppers to a Checkout That Only Speaks Visa

GoPay, QRIS, virtual accounts, and cash at the corner store — all in one plugin. Yeah. We do that.

Translated In The Following Languages

Arabic Unitag (ar-AA), Chinese, Traditional (zh-TW), Danish (da-DK), Dutch (nl-NL), English (en-GB), English, USA (en-US), Finnish (fi-FI), French (fr-FR), German (de-DE), Greek (el-GR), Hebrew (he-IL), Italian (it-IT), Japanese (ja-JP), Norwegian Bokmål (nb-NO), Persian Farsi (fa-IR), Polish (pl-PL), Portuguese, Brazil (pt-BR), Portuguese, Portugal (pt-PT), Russian (ru-RU), Spanish (es-ES), Swedish (sv-SE), Turkish (tr-TR)


  • Developer J2Commerce
  • Extension Type Apps
  • J2Commerce Version 6.x
  • Joomla Version 6.x
Language Translations
Arabic UnitagArabic Unitag
Chinese, TraditionalChinese, Traditional
DanishDanish
DutchDutch
EnglishEnglish
English, USAEnglish, USA
FinnishFinnish
FrenchFrench
GermanGerman
GreekGreek
HebrewHebrew
ItalianItalian
JapaneseJapanese
Norwegian BokmålNorwegian Bokmål
Persian FarsiPersian Farsi
PolishPolish
Portuguese, BrazilPortuguese, Brazil
Portuguese, PortugalPortuguese, Portugal
RussianRussian
SpanishSpanish
SwedishSwedish
TurkishTurkish

Deletion Remove the unused webhook event subscription and the handler it pointed at

Fix Only a gateway verdict that proves a refund did not happen now retires its refund key; a 5xx, a timeout or a replayed key leaves the key reusable so the next attempt cannot pay the customer a second time

Fix An unconfirmed refund attempt is reused only for the SAME amount; asking for a different one is refused with an explanation instead of silently substituting the earlier figure

Fix A partial refund no longer moves the order to the refunded end status from either the admin action or the webhook; only a refund that clears the balance does

Fix Each refund leg is capped to the amount Midtrans actually charged, so whole-rupiah rounding on a split refund can no longer make the final leg be rejected outright

Fix A refund the gateway accepted but the order ledger did not record now says so and tells the operator not to retry, instead of reporting a plain success

Fix Admin and checkout responses are now read with a balanced-brace JSON extractor, so stray PHP output either before OR after the payload no longer reports a completed refund or charge as a network error

New Feature Initial J2Commerce 6 release for the Midtrans gateway (Indonesia, IDR)

New Feature Snap hosted checkout in popup, redirect and embedded display modes

New Feature Core API on-site card form with browser-side tokenization and 3-D Secure

New Feature Saved cards, one-click reuse and merchant-initiated subscription renewals

New Feature Order-view actions: capture, void, expire, full and partial refund

New Feature HTTP notification webhook with SHA-512 signature verification

New Feature Fraud-hold review with approve and deny actions

New Feature Payment-method update surface: vault a card without charging it

New Feature Admin credential probe and gateway status refresh

New Feature Bank transfer, GoPay, ShopeePay, QRIS and over-the-counter methods

Improvement Order status only ever moves forward; a late notification cannot undo a paid order

Improvement Every money value is re-resolved server-side; no client-supplied amount is trusted

Improvement Refunds are clamped to the amount still refundable and carry a stable refund key

Improvement Card details are tokenized in the browser; no card number reaches the store

Improvement Bootstrap 5 and UIkit template variants for every shopper-facing layout

Update Requires Joomla 6.x, J2Commerce 6.x and a Midtrans merchant account

Update Refunds become available once Midtrans settles a card payment, usually the next day

Fix Only a gateway verdict that proves a refund did not happen now retires its refund key; a 5xx, a timeout or a replayed key leaves the key reusable so the next attempt cannot pay the customer a second time

Fix An unconfirmed refund attempt is reused only for the SAME amount; asking for a different one is refused with an explanation instead of silently substituting the earlier figure

Fix A partial refund no longer moves the order to the refunded end status from either the admin action or the webhook; only a refund that clears the balance does

Fix Each refund leg is capped to the amount Midtrans actually charged, so whole-rupiah rounding on a split refund can no longer make the final leg be rejected outright

Fix A refund the gateway accepted but the order ledger did not record now says so and tells the operator not to retry, instead of reporting a plain success

Fix Admin and checkout responses are now read with a balanced-brace JSON extractor, so stray PHP output either before OR after the payload no longer reports a completed refund or charge as a network error

New Feature Initial J2Commerce 6 release for the Midtrans gateway (Indonesia, IDR)

New Feature Snap hosted checkout in popup, redirect and embedded display modes

New Feature Core API on-site card form with browser-side tokenization and 3-D Secure

New Feature Saved cards, one-click reuse and merchant-initiated subscription renewals

New Feature Order-view actions: capture, void, expire, full and partial refund

New Feature HTTP notification webhook with SHA-512 signature verification

New Feature Fraud-hold review with approve and deny actions

New Feature Payment-method update surface: vault a card without charging it

New Feature Admin credential probe and gateway status refresh

New Feature Bank transfer, GoPay, ShopeePay, QRIS and over-the-counter methods

Improvement Order status only ever moves forward; a late notification cannot undo a paid order

Improvement Every money value is re-resolved server-side; no client-supplied amount is trusted

Improvement Refunds are clamped to the amount still refundable and carry a stable refund key

Improvement Card details are tokenized in the browser; no card number reaches the store

Improvement Bootstrap 5 and UIkit template variants for every shopper-facing layout

Update Requires Joomla 6.x, J2Commerce 6.x and a Midtrans merchant account

Update Refunds become available once Midtrans settles a card payment, usually the next day

Stay Updated

Subscribe for free and be the first to know about the latest features, updates, and new additions.