Metanotech Logo
Metanotech Logo

Have a project in mind? Let's talk.

Contact Us

Website Development

Payment Gateway Integration

Payment gateway integration turns a paid order into a confirmed one automatically, with nobody matching bank transfers by hand. The work has three parts: creating the transaction server side, showing the buyer a QRIS code or virtual account, then receiving a signed notification that proves the money arrived. Pricing is IDR 5,000,000 per module per year including the server, or it sits inside the e-commerce package from IDR 12,000,000 per year.

Free Consultation
A website checkout showing a QRIS code and virtual account options on a buyer's phone screen
Table of contents

Quick summary

  • QRIS, virtual accounts, e-wallets, and cards in one checkout
  • Paid status comes from a verified server notification, not the thank you page
  • Amounts are recalculated server side, so prices cannot be edited in the browser
  • Duplicate notifications are rejected, so one payment never counts twice
  • IDR 5,000,000 per module per year with the server, or in the e-commerce package from IDR 12,000,000
  • The merchant account and settlement account stay in your company name

The three parts that do the work

The pay button is the smallest piece of an online payment setup. What decides whether an integration is correct is what happens seconds after the buyer closes their banking app, because by then the money has moved and your site knows nothing about it.

The first part creates the transaction on the server, with the amount recalculated from database prices instead of read off a form. The second shows the buyer how to pay. The third takes the provider notification, checks its signature, then moves the order. Only the third may call an order paid.

  • Awaiting payment, with an expiry and stock held
  • Paid, only after a notification passes its signature check
  • Failed or expired, with stock released without human help
  • Refunded partly or fully, recorded apart from cancellations

The payment methods Indonesian buyers actually use

For small and mid sized baskets a QRIS integration wins, because buyers scan the code from whichever bank or e-wallet app is already on their phone, with no numbers to type. Virtual accounts still win on large amounts and with corporate buyers who need a transfer receipt, while retail outlets matter for buyers who pay cash.

Per transaction fees and settlement schedules are set by the provider, not by us, and the gaps are wide enough to move your margin when the average order is small. We usually enable the three or four methods that get used, then add more once data justifies it, because twelve options read as noise on a phone.

The failures we keep finding in the field

The number one mistake in a checkout integration never changes: the order status is updated on the redirect page. That page only loads if the buyer waits for their browser to come back to your site, and most buyers do not wait. Money arrives, the order still reads unpaid, and somebody on your team chases the gap through bank statements every night.

The next failure is more dangerous because it stays invisible until somebody tries it. A notification endpoint with no signature check can be called by anyone who guesses the address, and one forged request is enough to mark an order paid with no money behind it. At one building materials distributor, virtual account orders never changed status because a firewall had blocked the endpoint from day one, and two staff reconciled by hand for months.

  • Status driven by the redirect page, so closing the tab looks unpaid
  • The notification endpoint skips signature checks, so paid status can be forged
  • The amount is taken from the browser form instead of database prices
  • Retried notifications get processed twice, doubling stock and revenue
  • Expired virtual accounts keep stock locked inside dead orders

How to test your own integration

The five checks below fit into one afternoon in sandbox mode, and none needs source code access except to fix what it finds. Run them before the ads go live, not after a buyer chases goods your system insists were never paid for.

If one check fails, what is broken is not the look of your checkout but your record of the money, and the gap grows quietly until it shows up in a monthly report.

  • Pay in sandbox, then close the tab before the thank you page loads. The order must still turn paid
  • Post a fake notification with curl. If it is accepted, signatures are not being checked
  • Change the amount through browser devtools. The server has to refuse it
  • Send the same notification twice. Stock and revenue must not move twice
  • Compare one day of settlement with that day's paid orders. The totals have to match

Merchant account, settlement, and handover

Providers want company paperwork before they open an account, normally the deed of incorporation, the corporate tax number, the director's ID, and a company bank account for settlement. Verification sits with the provider and its length is outside our control, which makes it the most common reason a store slips its launch date.

The merchant account is opened in your company name, not ours, and settlement moves from the provider straight into your account without passing through anybody. The principle matches the domain rule: anything tied to your money or identity stays yours, so a working relationship can end without your payments dying with it.

At handover you receive the list of endpoints and order states in use, production credentials held in your own account, a daily reconciliation procedure a non technical staff member can follow, and a notification log for tracing orders. Hosting, SSL, the server, the WhatsApp group, and unlimited revisions for a year come with the package, while the domain is bought separately and stays in your name. Our team works from Gunung Putri, Bogor.

Ways to buy the integration and what each one covers

Ways to buy the integration and what each one covers
OptionPriceWhat it covers
One payment module on an existing systemIDR 5,000,000 per module per yearServer included
Bundle of five application modulesIDR 20,000,000 per yearThe payment module plus four others
E-commerce packageFrom IDR 12,000,000 per yearUp to 500 product and content pages
Running Business packageIDR 20,000,000 per yearSEO website plus three application modules
Hosting, SSL, server, WhatsApp group, revisionsIncludedRevisions unlimited for a full year
DomainBought separatelyStays in your company name
Provider account and transaction feesOutside the packageSet by the provider, settled to your account

Frequently asked questions

What does payment gateway integration cost?

Integration is priced at IDR 5,000,000 per module per year, server included. Every five modules bundle into one IDR 20,000,000 per year package. When the store is built at the same time, the e-commerce package from IDR 12,000,000 per year already covers payments. Provider fees are separate and come out of your settlement.

Can QRIS run on my own website, not only inside an app?

QRIS can be rendered right inside your website checkout through a payment gateway, with an expiry timer and a status that flips by itself once payment lands. A printed static QR code also receives money, but every order still has to be matched by hand because the site is never told.

What happens if a buyer closes the browser right after paying?

The order still turns paid when its status is driven by a server notification, because the provider sends it to your server without involving the buyer's browser. On integrations that rely on the redirect page, the same order sits unpaid even though the money arrived. We test that difference first.

How long until the money reaches my company account?

Settlement timing is decided by the payment provider, differs per method, and usually lands a few working days after the transaction. Metanotech never holds client funds, so money moves from the provider straight into your company account. Our job is keeping your records matched to that settlement report.

Are my buyers' card details stored on my website?

Card details never touch your server in a correct integration, because they are typed into a page or component owned by the certified provider. Your system keeps only the transaction id, the amount, the method, and the status.

Can this be added to a system that is already running?

An existing system can take a payment module as long as orders and prices live in a database rather than only in a form. We start by reading the order flow you already have, then add the states, the notification endpoint, and the reconciliation. Pricing is the same, IDR 5,000,000 per module per year.

Tell us your situation and we will reply with concrete steps.

Free Consultation

Related services

All services