Overview
Retrieve the current status and full details of a payment charge. Use this endpoint to:- Check if a payment has been completed
- Get payment provider details and references
- View payment amount and currency
- See status history and transitions
- Retrieve metadata you attached during checkout
Authentication
Type: API Key (required)Required Headers
Request
Method & Path
Path Parameters
View path parameters
View path parameters
string
required
The unique charge identifier (starts with
ch_)Example Request
Response
200 Success
Returns complete charge details including status history.Response Fields
View response fields
View response fields
string
Unique charge identifier
string
Your organization ID
string
Customer identifier
string
Amount customer paid
string
Currency customer paid in
string
Currency you’ll receive settlement in
string
Amount you’ll receive (after fees)
string
Amount the customer has paid so far (relevant for underpaid charges)
string
Remaining balance (non-zero for underpaid charges)
string
Current charge status (see statuses below)
object
Your custom metadata from checkout
array
Chronological history of status changes
string
ISO 8601 timestamp of charge creation
string
ISO 8601 timestamp of last update
Charge Statuses
Charges go through various statuses during their lifecycle:Final Statuses
Once a charge reaches a final status (succeeded, accepted, failed, cancelled, expired, refunded, partially_refunded, auto_refunded), it will not change again.
Automatic refunds
auto_refunded means we refunded the full payment automatically. This happens when a refund is required outside your control, such as an early fraud or dispute warning.
Error Responses
404 Not Found
404 Not Found
Charge doesn’t exist or doesn’t belong to your organization.Causes:
- Invalid
charge_id - Charge belongs to a different organization
- Charge exists in a different environment (test vs live)
403 Forbidden
403 Forbidden
You don’t have access to this charge.Cause: The charge was created by a different organization.
Example Use Case
Scenario: Your order management system fulfils an order as soon as its payment succeeds. Subscribe to the charge events and act when one arrives. You do not ask us for the status. We tell you.charge_id so a repeat is ignored.
Recovering a missed event
A webhook can fail to reach you if your endpoint is down. Recover with a scheduled sweep, not a loop for each payment. Once every few minutes, list the charges you still believe are unfinished and read their current status in one request:A charge still
created or processing after 15 minutes is unusual. Read
Charge Statuses above, then contact support rather than continuing to
retry.Understanding Settlement Amounts
Thesettlement_amount is what you actually receive after fees are deducted:
- Customer pays:
NGN 75,000.00(amount) - Fees:
NGN 750.00 - You receive:
NGN 74,250.00(settlement_amount)
- Payment method used
- Your fee configuration
- Charge amount
Using Status History
Thestatus_history array shows every status change with timestamps:
Common Questions
How often should I check a charge?
You should not need to check it at all. Subscribe to webhook events and we notify you the moment the charge changes. If you run a reconciliation sweep to recover missed events, once every few minutes is enough. Most payments finish within 5 to 10 minutes.What if status is stuck in created or processing?
- Wait at least 10 minutes before assuming an issue
- Check if customer completed the payment
- Contact support if status doesn’t update after 15 minutes
Can a succeeded charge change to failed?
No. Once succeeded, the status is final. However, a completed charge can later be refunded.
How do I know the exact amount I’ll receive?
Use thesettlement_amount field. This is your net amount after all fees.
Can I get charges for a specific checkout?
Yes, use List Payins and filter bycheckout_id.
Related Endpoints
- Create Checkout - Create a checkout that generates a charge
- List Payins - List all charges for your organization
- Webhook Events - Receive real-time charge updates
Next Steps
After retrieving charge status:1
Handle completed payments
If status is
succeeded, grant access and update the order.2
Handle failed payments
If status is
failed, notify the customer and offer retry options.3
Handle non-final states
If the status is not final, wait for the webhook. Do not loop on this endpoint.
4
Enable production webhooks
Set up webhook delivery (see Webhook Documentation).

