Skip to content
DEVELOPERS

A stable billing model across changing payment routes.

Create invoices, issue secure checkout links and respond to precise state changes through one integration.

request.json● ● ●
const session = await rw.checkout.create({
  invoice: "inv_10482",
  customer: "cus_8Q2",
  expires_in: 1800
});

return session.url;
201 Created · 184 ms
QUICKSTART

From invoice to verified event in four steps.

  1. 01Create an invoice

    Fix seller, amount, currency and purpose before payment.

  2. 02Open checkout

    Give the customer an opaque, expiring URL.

  3. 03Start an attempt

    The customer chooses and authorises an enabled wallet.

  4. 04Consume events

    Update your product from authenticated, idempotent webhooks.

DOMAIN OBJECTS

Primitives that map to the real collection lifecycle.

01Customer
02Subscription
03Invoice
04Checkout session
05Payment attempt
06Provider evidence
WEBHOOK EVENTpayment_attempt.updated
{
  "attempt_id": "pat_7J4M",
  "status": "UNKNOWN",
  "reason": "PROVIDER_TIMEOUT",
  "safe_to_retry": false
}

Ambiguity is data. UNKNOWN remains distinct until provider evidence resolves the attempt.

NEXT STEP

Build the billing integration once.

Use the product model today and add provider routes as your commercial approvals mature.