Option 1: Charge‑only
Create a Charge directly (noorder_id). A charge is a single attempt to collect funds via a specific method (e.g., bank transfer, QRIS, e‑wallet, card).
Body Parameters
Body Parameters
Request Example : Charge‑only (QRIS)
Request Example : Charge‑only (QRIS)
Response Example
Response Example
Charge Lifecycle & Actions
Charge Lifecycle & Actions
- Statuses:
pending,succeeded,failed,expired,canceled - Actions enum
REDIRECT_CUSTOMER→ send customer to provider / 3DS pagePRESENT_TO_CUSTOMER→ display QR / VA / instructionsNONE→ no action needed
Rules
• A charge has its own expiry (actions.expires_atwhere applicable).
• Avoid multiple concurrent charges for the same intent.
• Use idempotency and webhooks to finalize outcome.
Option 2: Order + Charge
An Order represents payment intent and provides a shared lifecycle over multiple attempts (charges). Use when you need retries, consolidated reporting, and global expiry across attempts.Body Parameters
Body Parameters
Request Example : Create Order
Request Example : Create Order
Response Example
Response Example
Order rules
• Amount / currency fixed at order creation.
• Charge expiry cannot exceed order expiry.
• Only one successful charge per order.
• On first success → order becomessucceeded.
Webhooks
Charge‑only Events
Charge‑only Events
Example : charge.succeeded
Example : charge.succeeded
Order + Charge Events
Order + Charge Events
Example : order.succeeded
Example : order.succeeded
Objects & Schemas
Charge Object
Charge Object
Order Object
Order Object