Practical software guides
An order, an authorised payment, a capture and a bank payout are different things. Keep the provider reference and state transitions rather than reducing them to a single “paid” checkbox.
| State | What to verify |
|---|---|
| Authorised | Provider reserves/approves according to its supported flow |
| Captured | Provider reports captured amount |
| Balance/settlement | Fees, reserves and timing depend on provider/rail |
| Payout received | Batch matched to bank receipt |
| Refunded | Approved refund and provider result |
| Disputed | Separate dispute status and evidence workflow |
The Stripe PaymentIntent lifecycle is a specific card-provider reference. Other providers and rails differ. Custom software cannot accelerate a provider’s settlement schedule or guarantee funds against disputes.
After a timeout, query the original reference before retrying. Verify callbacks and deduplicate events. Reconcile synthetic order O-18 for B$100 with its capture, fee and payout batch before enabling any live workflow. Keep card data and credentials out of custom records. The net-payout example shows the arithmetic.