One infrastructure, the whole billing cycle
More than a payment gateway. From the invoice going out to the funds landing in your account, everything is recorded and auditable.
Accept Payments
Virtual Accounts at 8 banks and QRIS through one API. A ready-to-use payment page, a webhook the moment it's paid, and settlement in T+1 business days to your company's bank account.
Learn more →Bank Transfer (Account Mutation)
Customers transfer straight to your business account (BCA, Mandiri, BNI, or BSI), confirmed automatically through a unique amount. Funds land instantly with no settlement, and you can use it while your verification is still in progress. Rp0 per transaction.
Learn more →Recurring Billing
Set up a plan once, and doit.id issues an invoice every period: complete with a shareable payment link and, if you like, a billing email sent straight to your customer.
Learn more →From no-code to AI agents
Start with the simplest one. Level up whenever you're ready; they all write to the same dashboard and reports.
No code, straight from the dashboard
The + Create invoice button in the portal: enter an amount and a customer name, and a payment link is ready instantly, complete with a billing message template you can send over WhatsApp. Your admin staff can start collecting today, no developer required. Running a WooCommerce store? Install the official plugin.
One script tag on your site
Drop in embed.js, and the payment page opens as a
modal on your own site. Customers pay without leaving the page,
and the modal closes itself once it's paid.
See how →
A full API for your systems
One POST /v1/payments to create an invoice, one
webhook when it's paid, plus automatic recurring billing.
Authentication is a simple Bearer token, no signatures.
Read the docs →
Ready for AI agents
An API reference in llms.txt plus a single-file MCP
server with zero dependencies: agents like Claude can create
invoices and check statuses directly as tools.
Add it to your agent →
This is what the integration looks like: one request to create an invoice, one webhook when it is paid.
$ curl -X POST https://pay.doit.id/v1/payments \ -H "Authorization: Bearer pb_test_xxx" \ -d '{"amount": 150000, "rail": "qris", "reference": "INV/001"}' // response: render qr_content as a QR image { "id": "pay_x8Kj2…", "amount": 150000, "status": "pending", "qr_content": "00020101…" } // when the customer pays → a webhook hits your server POST https://api.tokomu.id/webhook { "event": "payment.paid", "reference": "INV/001" }
A clear, fully recorded flow of funds
For Virtual Account and QRIS, your customers' money is processed by providers licensed by Bank Indonesia, then lands in your business bank account. Every step is recorded, and you can audit it any time.
The settlement destination account is locked. It's verified during onboarding and can't be changed without re-verification. Every transfer comes with an email breakdown per payment method, and the full history (transfer date, reference, amount) is always available in the dashboard.
Built for businesses that bill on a schedule
Born from the real needs of an internet provider billing thousands of customers every month.
Infrastructure we run our own business on
IDCloudHost's billing system runs on doit.id every single day. If something goes wrong, we feel it first, not you.
We're its first customer
Payments from IDCloudHost's cloud customers flow through the same infrastructure as yours. Reliability isn't a marketing promise; it's our own necessity.
Settlement you can audit
Every payout has its own line, complete with the date sent, the bank reference, and the amount received. The figures match the breakdown email exactly; the only deduction, the Rp10.000 payout fee per transfer, sits on its own line. The CSV export already includes the tax base (DPP) and VAT (PPN).
Reports ready for your finance team
The finance role gets its own account: it sees reports and payments only, and can't touch API keys or settings. No more sharing one login with the tech team.
Switch gateways with zero downtime
Compatible with the Duitku and Xendit API formats: migrate gradually while your old system keeps serving, not an all-at-once cutover. Swap the base URL and key, and your code keeps working.
Several companies, one dashboard
Own more than one company? Add each as a business entity under the same account: every entity passes its own KYC and gets its own payout account, while the integration, API keys, and team stay one. Each app simply picks the entity it pays out to.
Payouts on your rhythm
Automatic in T+1 business days, or hold funds and pay out yourself from the portal whenever you like: one transfer, one payout fee. Any pending balance is still paid out automatically by the start of the following month.
Frequently asked questions
Honest answers, no call with sales required, including if you're weighing a move from another gateway.
When does the money reach my account?
Within T+1 business days at the latest, funds arrive in the bank account held in your name or your company's name, with only the Rp10,000 payout fee per transfer deducted. Business days exclude Saturdays, Sundays, and national holidays, so Friday's transactions are forwarded on Monday. Every transfer comes with an email breakdown per payment method, and the full history (transfer date, reference, amount received) is always in the dashboard.
Prefer to let funds accumulate and pay them out yourself, say once at the end of the month? Turn on manual payout mode in the portal: forwarding is held until you press the payout button, still free of charge, and any pending balance is paid out automatically by the start of the following month at the latest. The default stays automatic at T+1.
How much does it cost?
Pay as you go, with no monthly subscription. First, transaction fees at the providers' official rates: VA at Rp3.000–Rp4.000 per transaction depending on the bank, QRIS at no MDR (0%) on transactions up to Rp100.000 and 0,7% above that, per Bank Indonesia's MDR regulation in force since 1 October 2026, bank transfer at Rp0 per transaction. No markup. Second, a flat Rp10.000 payout fee per transfer to your account, deducted from that payout itself: automatic daily settlement means one fee per business day that has funds; batch weekly or monthly via manual mode and you pay it once. Third, optional, an Account Mutation subscription at Rp300.000/month or Rp3.000.000/year per account if you use bank transfer, prepaid.
Beyond that, there's no separate charge for integration or setup, the dashboard, reports, sandbox, or team accounts, API calls and webhooks, or for cancelling. Details on the pricing page; any price change is announced well in advance.
No transactions this month, do I still get billed?
No. There is no monthly subscription. Fees only arise when there are transactions (transaction fees) and when funds are actually paid out to your account (the Rp10.000 payout fee per transfer). A quiet month means a bill of zero; the dashboard, API, and sandbox stay available.
The only fee that runs without transactions is the Account Mutation subscription, and it's optional: only if you add a bank account for transfers, prepaid per account, and it simply stops when not renewed.
Is there an admin fee per payout?
Yes, and only one: a flat Rp10.000 per transfer, deducted from that payout itself and shown as its own line in the settlement email and history. The amount landing in your account always reconciles: the forwarded amount minus Rp10.000, nothing else.
This fee applies to VA and QRIS payouts only; bank transfer (Account Mutation) is exempt, as funds land directly in your account. The fee follows the number of transfers, not the amount. Automatic daily settlement means one fee per business day that has funds; if you'd rather accumulate and pay out once a week or month via manual mode, the whole accumulation goes out as a single transfer with a single fee. The choice is yours, and we're honest about the cost behind it: every transfer carries a bank fee we pay.
Who can sign up?
Individuals and registered businesses alike, as long as they pass verification (KYC). Individuals need just an ID card (KTP), a selfie holding the KTP, and proof of a bank account in their own name (tax ID optional). Registered businesses (a PT, CV, or other legal entity) prepare the deed of establishment & SK Kemenkumham, the company tax ID (NPWP), the business registration number (NIB), plus the directors' KTP and personal tax IDs. Funds are always forwarded to an account in the account holder's name: yours per your KTP for individuals, the company's per the deed for businesses. Approval remains at the discretion of our team and the licensed provider.
Is my application guaranteed to be approved?
No, and we prefer to say so upfront. Verification (KYC) is decided by our team together with the licensed payment provider. A rejection by the provider is not something we can overturn, and it falls outside doit.id responsibility.
The most common reason an application stalls: a website that does not tell the story of its transactions. A reviewer has to be able to see for themselves what you sell, what it costs, and how a customer orders and pays. A page with only a company profile, a "coming soon" notice, or a link to a marketplace is usually not enough. This is a Bank Indonesia requirement, not our preference.
Not approved yet, or rejected? Email care@doit.id. Our team will talk it through with you, understand your business, and tell you what is still missing. Many applications pass once the gaps are filled.
Why go through doit.id instead of straight to the provider?
Sign up directly with a gateway and you get a payment gateway. With doit.id, you get the entire billing cycle, from issue to paid: recurring invoices issued automatically, a payment link ready to share over any channel, the customer pays, and a PAID webhook lands in your system without anyone typing. ISPs run this full cycle in production every day, and you won't get it by signing up directly with any gateway.
On price: our transaction fees are the same as the providers' official rates, with no markup, so going direct isn't cheaper. On top of that you get a developer-friendly API, a sandbox & payment simulation, tax-ready reports, auditable settlement, integration hand-holding, and 24-hour support. And your integration stays the same if one day there's more than one provider behind it.
doit.id is built by Alfian Pamungkas Sakawiguna and processes payments from IDCloudHost's own cloud customers every day: IDCloudHost is its first live user.
How safe is my settlement?
Payments are processed by payment service providers licensed by Bank Indonesia. Settlement is only ever sent to the company bank account verified during onboarding. The destination account is locked and can't be changed without re-verification, so your account is safe from takeover. There's no balance you have to withdraw manually: every settlement goes out on schedule, is announced by email with its breakdown, and the entire history is auditable in the dashboard. Every payout can even be broken down per transaction: reference, method, when it was paid, fees, and the amount forwarded, so the figure that lands always reconciles with your own sales records.
Which payment methods are available?
Virtual Accounts at the major banks, and QRIS: the two most widely used methods, and the ones that cause the fewest disputes. Other methods will follow once these two are truly mature. Details on the Accept Payments page.
How complicated is the integration?
One request to create an invoice, one webhook when it's paid. Authentication is a single Bearer header, no signatures or timestamps. A sandbox and payment simulation are available, and our team stays with you until your first live transaction goes through. More on the Developer page.
Can I bill the same customer automatically every month?
Yes, that's one of the very reasons doit.id exists. With
Recurring Billing, you create a
plan once (amount + interval), subscribe the customer, and an invoice
is issued automatically every period: complete with a shareable
payment link, an invoice.created webhook, and, if you
like, a billing email straight to the customer. No stored cards and
no auto-debit.
I already use another payment gateway. Can I switch?
Yes, and more easily than you might think. We provide a compatibility mode for Duitku and Xendit (Invoice API): your existing integration code keeps working as-is, just swap the base URL and key. Enable it yourself when creating an app in the portal, and the credentials appear right away. Your old system keeps serving while you migrate step by step, so there's no downtime. Gateway not on the list yet? Let us know; the list keeps growing.
I own more than one company. Do I need separate accounts?
No. Add the other company as a business entity under the same account, from the Business entities menu in the portal: each entity goes through its own verification (KYC) and gets its own payout account, while the integration, API keys, payment connection, and team stay one. When creating an app, pick the entity it pays out to; payments from that app show the entity name on the payment page and are forwarded to its account. Sub-merchants are different: they are for platforms opening payments to their own customers.
How do I get started?
Sign up on your own at doit.id/daftar: fill in your business details, upload the documents (you can save and resume any time), then submit. The sandbox is fully usable from day one, while verification runs in parallel: we pre-validate your business documents first, then pass them to a licensed provider for official merchant registration. Once approved, your account goes live right away, complete with a dashboard, a verified settlement account, and hands-on help until your first live transaction. Prefer to be walked through it? Email care@doit.id.