doit
Developer

Your first integration in minutes

Everything is self-service: sandbox, documentation, and payment simulation, ready to use without waiting on anyone. Authentication is a single Bearer header, no signatures, timestamps, or extra rituals.

Get started

Three steps to your first webhook

Grab a sandbox API key

Keys start with pb_test_. The environment is determined by the key prefix, not the base URL, so your integration code never changes when you go live.

Create your first payment

One POST /v1/payments with the amount, method, and your own reference. The response comes back with a hosted_url, a VA number, or QR content.

Simulate a payment

Click Simulate paid in the portal, and a payment.paid webhook lands on your server. Integration done before your coffee gets cold.

Example

One request, one webhook

terminal · create a QRIS payment
$ 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 → webhook to your server
POST https://api.tokomu.id/webhook
{ "event": "payment.paid", "reference": "INV/001" }
Built for production

Details you only notice when your system gets busy

🔑

Idempotency built in

Every POST takes an Idempotency-Key header. A request retried after a timeout will never create a duplicate payment.

🔔

Webhooks that do not give up

Delivery failed? Retried with backoff for up to 24 hours, then moved to a dead-letter queue you can replay any time from the portal, complete with a history of every attempt.

🔄

Compatibility modes

Your existing code for Duitku or Xendit (Invoice API) keeps working as is: swap the base URL and key, done. Migrate gradually with zero downtime.

📝

Errors that name the problem

Every error carries a stable code for machines and a message that names the exact field at fault, plus a doc_url linking to the explanation.

Support

Self-service, but never on your own

Our documentation is written so you never have to ask. But when you need a human, someone answers: a person who understands your code and how business works here.

  • Integration guidance From flow design to your first successful webhook, we stay with you until your first live transaction.
  • 24-hour support team Payment systems do not keep office hours. Neither does our team.
  • Local developers first Documentation in English and Indonesian, support in Indonesian, and a real understanding of how business is done here.
  • We are its first customer IDCloudHost's own billing system runs on it every day. If anything breaks, we feel it before you do.

Start in the sandbox

Sign up on your own at doit.id/daftar, and the sandbox is fully usable from day one while verification runs in parallel. Want a hand along the way? Email us.

Sign up now doit@idcloudhost.com Read the API docs