Skip to main content
Monxa simplifies accepting payments across Asia with a flexible Order + Charge model where Order is optional. Integrate either as Charge-only (fastest path) or Order + Charge (for retries, shared expiry, and unified lifecycle).

Option 1: Charge‑only

Create a Charge directly (no order_id). A charge is a single attempt to collect funds via a specific method (e.g., bank transfer, QRIS, e‑wallet, card).
POST /v1/charges
  • Statuses: pending, succeeded, failed, expired, canceled
  • Actions enum
    • REDIRECT_CUSTOMER → send customer to provider / 3DS page
    • PRESENT_TO_CUSTOMER → display QR / VA / instructions
    • NONE → no action needed
Rules
• A charge has its own expiry (actions.expires_at where 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.
POST /v1/orders
Now, create a Charge under the order:
POST /v1/charges
Order rules
• Amount / currency fixed at order creation.
• Charge expiry cannot exceed order expiry.
Only one successful charge per order.
• On first success → order becomes succeeded.

Webhooks

Objects & Schemas