Event reference
A non-exhaustive list of the event types Soxara delivers today, with the shape of data.object. Full per-event detail is part of the Phase 2 docs build.
Payments
| Event | When it fires |
|---|---|
payment.created | A PaymentIntent has been created (typically by you) but no payment method has been confirmed yet |
payment.requires_action | Customer needs to complete a step (3DS, MoMo PIN prompt, etc.) |
payment.succeeded | Funds have been captured and the merchant’s balance is credited |
payment.failed | Customer’s card was declined, MoMo timed out, or wallet had insufficient funds |
payment.canceled | The PaymentIntent was canceled before completion |
Refunds
| Event | When it fires |
|---|---|
refund.created | A refund was initiated |
refund.succeeded | Funds returned to the customer’s source (card, MoMo, wallet) |
refund.failed | The provider couldn’t reverse the original transaction (rare but possible) |
Transfers (wallet-to-wallet)
| Event | When it fires |
|---|---|
transfer.created | A send was initiated (recipient may not be a user yet) |
transfer.succeeded | Recipient is a user and funds are in their wallet, OR recipient claimed via the viral flow |
transfer.expired | The recipient never claimed; funds are auto-returned to the sender after the claim window |
transfer.claimed | A non-user recipient claimed via the WhatsApp link and onboarded |
Gift cards
| Event | When it fires |
|---|---|
gift_card.created | A merchant gift card was issued by a buyer |
gift_card.redeemed | A card was redeemed at the merchant POS (full or partial balance use) |
gift_card.expired | A card hit its expiry without being fully redeemed |
gift_card.shared | A bulk-share batch was created (one card → many recipients via claim links) |
gift_card.claimed | A recipient claimed a shared gift card |
Bill payments
| Event | When it fires |
|---|---|
bill_payment.initiated | Customer started a bill payment (LEC, LWSC, etc.) |
bill_payment.succeeded | Biller confirmed receipt; token (if applicable) is in data.object.token |
bill_payment.failed | Biller rejected the payment or timed out |
Subscriptions / memberships
| Event | When it fires |
|---|---|
membership.subscribed | A customer subscribed to one of your membership tiers |
membership.renewed | A recurring payment succeeded for an active membership |
membership.payment_failed | A recurring payment failed; the member enters grace period |
membership.canceled | Subscriber canceled OR billing failed past the grace period |
Disputes
| Event | When it fires |
|---|---|
charge.dispute.created | A cardholder opened a dispute against a payment |
charge.dispute.updated | Dispute status changed (evidence submitted, deadline approaching, etc.) |
charge.dispute.closed | Dispute resolved (won, lost, or withdrawn) |
Sample payload — payment.succeeded
{
"id": "evt_3TZAbCdEfGhIjKl",
"type": "payment.succeeded",
"livemode": true,
"created_at": "2026-05-23T14:05:33Z",
"data": {
"object": {
"id": "pi_3TZ1MnOpQrStUvWx",
"amount": 1250,
"currency": "USD",
"status": "succeeded",
"payment_method": "card",
"description": "Order #5021",
"customer": {
"id": "usr_8K2nP3...",
"phone_number": "+231881158457",
"country_code": "LR"
},
"metadata": {
"order_id": "5021"
},
"created_at": "2026-05-23T14:05:14Z",
"succeeded_at": "2026-05-23T14:05:32Z"
}
}
}