# Payment statuses

A payment has one status at a time, and the status tells you whether to deliver goods or services. Webhooks and the payment details endpoints return it in the `status` field, and `payment_tier` is an alias for it.

## Statuses

The table below lists every status with the action to take. Deliver only when the status is `good`.

| Status | Meaning | What to do |
|---|---|---|
| `none` | No payment is detected yet. | Don't deliver. |
| `short` | The customer paid less than requested. | Don't deliver. Refund, accept the shortfall, or ask the customer to top up. |
| `hold` | The amount is right but can't be confirmed instantly. Triple-A investigates. | Don't deliver. Wait for the next status. |
| `good` | The payment is confirmed and the funds are guaranteed. | Mark the order paid and deliver. |
| `invalid` | The network rejected the payment, or it has a serious issue. | Don't deliver. If funds arrived, Triple-A refunds the customer automatically after a delay. |

## How statuses change

Statuses only move forward. A payment that reaches `good` doesn't go back. Triple-A confirms 97% of transactions instantly, and they reach `good` within seconds of being broadcast to the network.

The following diagram shows every move a payment can make.

```mermaid
stateDiagram-v2
  [*] --> none
  none --> hold
  none --> good
  none --> short
  none --> invalid
  hold --> good
  hold --> short
  hold --> invalid
  good --> [*]
  short --> [*]
  invalid --> [*]
```

The possible moves are as follows.

- From `none`, a payment can go to `hold`, `good`, `short`, or `invalid`.
- From `hold`, a payment can go to `good`, `short`, or `invalid`.

## Related content

These pages cover related topics.

- [Webhooks](/docs/reference/webhooks/) to receive status changes
- [Stablecoin checkout](/docs/stablecoin-payments/tutorials/stablecoin-checkout/#fulfil-the-order) to act on a status in your server