For the complete documentation index, see llms.txt. This page is also available as Markdown.

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/json

Bead 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/json

Payload 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

Field
Description

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

Status
What the example shows

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.

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.

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 statusCode as the primary state indicator.

  • Store both paymentId and trackingId with your internal payment, invoice, or order record.

  • Use paymentId when calling GET /Payments/{id}/tracking.

  • Use trackingId to correlate Create Payment responses, webhook events, reporting records, and support workflows.

  • Compare amounts.requested and amounts.paid when handling underpaid or overpaid.

  • Treat processing as a non-final state.

  • Treat completed as successful for the requested amount.

  • Treat underpaid, overpaid, expired, invalid, and cancelled as not successful for fulfillment.

  • Make 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}/tracking to confirm the current state.

Last updated