Documentation IndexFetch the complete documentation index at: /llms.txtUse this file to discover all available pages before exploring further.
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Common authorisation and capture flow examples
1. Customer places order for R1 500.00 2. Create session with capture_method: manual → authorise R1 500.00 3. Webhook: payment.succeeded (funds reserved) 4. Warehouse confirms stock and ships → POST /captures (full amount) 5. Webhook: payment.captured
1. Guest checks in, estimated 3-night stay at R500/night 2. Authorise R1 500.00 3. Webhook: payment.succeeded (funds reserved) 4. Guest checks out after 2 nights → capture R1 000.00 5. Void remaining authorisation 6. Webhooks: payment.captured, then payment.voided
1. Customer pre-orders limited item for R2 000.00 2. Authorise R2 000.00 3. Webhook: payment.succeeded (funds reserved) 4. Item becomes unavailable → void full amount 5. Webhook: payment.voided
1. Customer orders 3 items totalling R3 000.00 2. Authorise R3 000.00 3. Webhook: payment.succeeded (funds reserved) 4. Ship item 1 (R1 200.00) → capture R1 200.00 5. Ship item 2 (R800.00) → capture R800.00 6. Item 3 out of stock → void remaining authorisation 7. Webhooks: payment.captured (x2), payment.voided
1. Customer places R5 000.00 order 2. Authorise R5 000.00 3. Webhook: payment.succeeded (funds reserved) 4. Fraud team reviews (within authorisation window) 5a. Approved → capture full amount 5b. Flagged → void full amount
1. Customer finishes meal for R500.00 2. Authorise R500.00 3. Webhook: payment.succeeded (funds reserved) 4. Customer adds R75.00 tip → capture R575.00 (within authorised amount) 5. Webhook: payment.captured
1. Customer rents a car, R5 000.00 deposit required 2. Authorise R5 000.00 3. Webhook: payment.succeeded (funds reserved) 4. Customer returns car, rental fee is R2 500.00 → capture R2 500.00 5. Void remaining R2 500.00 deposit 6. Webhooks: payment.captured, then payment.voided
POST /collect/payment_sessions { "amount": 250000, "currency": "ZAR", "type": "one_time", "options": { "customer": { "name": "Lara", "email": "lara@example.com" }, "checkout_options": { "return_url": "https://shop.example/order/ord_789/status" }, "payment_method_options": { "card": { "capture_method": "manual" } } }, "external_reference": "ord_789", "metadata": { "order_id": "ord_789", "items": "laptop,mouse" } }
{ "id": "evt_92847561234", "type": "payment.succeeded", "data": { "id": "pay_Xk9mPqR3sTuV7w", "status": "succeeded", "amount": 250000, "currency": "ZAR", "capture_method": "manual", "authorised_amount": 250000, "paid_amount": 0, "voided_amount": 0, "country": "ZA", "payment_method_details": { "type": "card", "card": { "type": "CREDIT", "scheme": "VISA", "bin": "411111", "last4": "1234" } }, "external_reference": "ord_789", "mode": "live", "metadata": { "order_id": "ord_789", "items": "laptop,mouse" }, "created_at": "2026-03-18T14:30:00.000Z", "updated_at": "2026-03-18T14:30:45.123Z" } }
POST /collect/payments/pay_Xk9mPqR3sTuV7w/captures Idempotency-Key: capture_ord_789_laptop { "amount": 220000 }
POST /collect/payments/pay_Xk9mPqR3sTuV7w/voids Idempotency-Key: void_ord_789_mouse // No request body needed
{ "authorised_amount": 250000, "paid_amount": 220000, "voided_amount": 30000 }
Was this page helpful?