Payment Status Response Examples
This page provides representative payment status payloads for common Bead payment outcomes.
The same status payload shape is used when you retrieve a payment status directly and when Bead sends a payment status webhook to your system.
Use these examples when mapping Bead payment outcomes to your internal order, invoice, or support states.
Status payload references
Use the tracking endpoint when you need to check the current status of a specific payment on demand.
GET /Payments/{id}/tracking
X-Api-Key: {apiKey}
Accept: application/jsonBead also sends payment status webhook events to the configured webhook URL for the terminal or payment. Your webhook handler should process the request body using the same status payload structure shown in the examples below.
POST {yourWebhookUrl}
Content-Type: application/jsonPayload shape
The status payload includes identifiers, the current payment state, amount information, and optional merchant-supplied metadata.
{
"paymentId": "string",
"trackingId": "string",
"paymentCode": "string",
"statusCode": "created | processing | completed | underpaid | overpaid | expired | invalid | cancelled",
"amounts": {
"requested": {
"inPaymentCurrency": {
"amount": 0,
"currency": null
},
"inRequestedCurrency": {
"amount": 0,
"currency": {
"id": 1,
"code": "USD",
"name": "US Dollar",
"symbol": "$"
}
}
},
"paid": {
"inPaymentCurrency": {
"amount": 0,
"currency": null
}
}
},
"reference": "string",
"description": "string",
"receivedTime": "2026-05-29T17:10:01Z",
"terminalId": "string",
"merchantId": "string",
"errorMessage": null
}Field notes
paymentId
Bead payment identifier. Use this value with GET /Payments/{id}/tracking.
trackingId
Tracking identifier returned when the payment was created. Store this with your internal order or invoice record for correlation.
paymentCode
Short payment code shown on the hosted payment page and in reporting.
statusCode
Current Bead payment status. Use this as the source of truth for payment state.
amounts.requested.inRequestedCurrency
Amount requested from the customer in the original requested currency.
amounts.requested.inPaymentCurrency
Amount expected in the selected payment currency, when available.
amounts.paid.inPaymentCurrency
Amount actually received in the payment currency.
reference
Optional merchant-supplied reference from the original payment request.
description
Optional merchant-supplied description from the original payment request.
receivedTime
Timestamp associated with the status event or update.
terminalId
Terminal associated with the payment.
merchantId
Merchant associated with the payment.
errorMessage
Additional error context when available. Usually null for normal lifecycle states.
Status examples covered
created
Payment record created; no funds confirmed yet
processing
Payment is in progress; final outcome is not yet known
completed
Customer paid the requested amount
underpaid
Customer sent less than the requested amount
overpaid
Customer sent more than the requested amount
expired
Payment expired before completion
cancelled
Payment was cancelled before completion
invalid
Irregular or unsupported payment event requiring exception handling
Refund statuses are not shown on this page.
Created
A created payment has been created, but the customer has not completed payment and no funds have been confirmed.
Processing
A processing payment is still in progress. The customer or wallet flow may have started, but the final payment outcome is not yet known.
Do not treat processing as a successful final state.
Completed
A completed payment indicates that the customer paid the requested amount.
Underpaid
An underpaid payment means the customer sent less than the requested amount.
The requested and paid objects show the difference between the amount expected and the amount actually received.
Do not treat underpaid as a successful payment. The crypto that was paid remains unconverted and will be returned to the payer through the reclaim process.
Overpaid
An overpaid payment means the customer sent more than the requested amount.
The requested and paid objects show the difference between the amount expected and the amount actually received.
Do not treat overpaid as a successful payment. The full crypto amount paid by the customer remains unconverted and will be returned to the payer through the reclaim process. No portion is converted or settled to the merchant. If the customer still wants to complete the purchase, create a new payment.
Expired
An expired payment means the payment window expired before the payment completed.
Cancelled
A cancelled payment means the payment was cancelled before completion.
Invalid
An invalid payment indicates an irregular or unsupported payment event. Examples may include multiple transactions, unsupported assets, compliance blocks, extreme market movement, or other exception conditions.
The exact errorMessage may vary by cause.
Implementation guidance
When mapping these payloads to your integration:
Use
statusCodeas the primary state indicatorStore both
paymentIdandtrackingIdwith your internal payment, invoice, or order recordUse
paymentIdwhen callingGET /Payments/{id}/trackingUse
trackingIdto correlate Create Payment responses, webhook events, reporting records, and support workflowsCompare
amounts.requestedandamounts.paidwhen handlingunderpaidoroverpaidTreat
processingas a non-final stateTreat
completedas successful for the requested amountTreat
underpaid,overpaid,expired,invalid, andcancelledas not successful for fulfillmentMake webhook processing idempotent — you may receive the same event more than once
If a webhook event is missed, delayed, or received out of order, call
GET /Payments/{id}/trackingto confirm the current state
Related pages
Last updated