Documentation Index
Fetch the complete documentation index at: https://docs.momentco.io/llms.txt
Use this file to discover all available pages before exploring further.
Common Examples
E-commerce: authorise at checkout, capture at shipment
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
Hotel: authorise estimated stay, capture actual amount
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
Pre-order: authorise, void if unavailable
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
Partial fulfillment: capture per shipment
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
Fraud review: authorise, review, then decide
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
Tip adjustment: authorise base amount, capture with gratuity
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
Rental deposit: authorise deposit, capture actual charges
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
Detailed End-to-End Example
A merchant selling electronics wants to authorise at checkout and capture at shipment.
Step 1: Create payment session
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"
}
}
Step 2: Customer authorises (webhook received)
{
"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"
}
}
Step 3: Laptop ships, capture R2 200.00
POST /collect/payments/pay_Xk9mPqR3sTuV7w/captures
Idempotency-Key: capture_ord_789_laptop
{
"amount": 220000
}
Step 4: Mouse out of stock, void remaining authorisation
POST /collect/payments/pay_Xk9mPqR3sTuV7w/voids
Idempotency-Key: void_ord_789_mouse
// No request body needed
Final payment state:
{
"authorised_amount": 250000,
"paid_amount": 220000,
"voided_amount": 30000
}