status tells you where the charge stands. Some statuses also have a substatus that explains what is happening or why the charge ended.
Use Get Charge Status to retrieve a charge, or use webhooks to receive payment updates as they happen.
Charge statuses
How statuses and substatuses relate
status describes the charge’s overall state. substatus adds detail to certain statuses. It does not replace status, and it does not by itself confirm that money was collected.
For an open charge, substatus describes the current payment attempt:
For a charge that has ended without payment,
substatus explains why:
The
open substatus reflects the current attempts and can change as they progress. For example, an open charge with last_attempt_failed is still payable. A failed attempt does not mean the whole charge has failed.
A completed charge keeps its ending substatus. For compatibility, webhooks can report the reason as a status such as cancelled or expired, while the Payments API reports incomplete with a substatus. Check the status and substatus together when handling these records.
Decide what to do
- Keep the order pending while the charge is
open. - Fulfill when the payment reaches
succeeded,accepted, oroverpaid, applying your own rules for the amount received. - Do not fulfill an
incompleteorfailedcharge. - When a charge is refunded, use its refund status and
refunded_amountto update your records. - For an asynchronous payment, use webhooks for updates and retrieve the charge when you need its current state.

