Skip to main content
A payment moves through up to five states. Your webhook endpoint is notified at each transition — build your order logic around these events, not around the customer’s redirect.
1

Pending

Created via POST /payments. Tribridge returns the id and checkout_url. No chain activity yet — the customer hasn’t paid anything.What you do: store the payment id against your order and send the customer to checkout_url.
2

Address generated

The customer opens checkout and selects a chain (solana or sui). Tribridge derives a one-time deposit wallet and displays it with the exact amount.What you do: nothing — but you can show a “waiting for payment” state in your own UI.
3

Confirmed

The on-chain transfer reaches finality. Tribridge detects it (Helius webhook on Solana, polling listener on Sui) and emits the payment.confirmed webhook.What you do: mark the order as paid in your system. Only trust this after verifying the webhook signature.
4

Completed (forwarded)

Funds are swept from the deposit wallet to your payout wallet (gas paid by Tribridge). The payment.completed webhook fires and the customer is redirected to your redirect_url.What you do: fulfill the order. completed is the terminal success state.
5

Expired / Cancelled

Terminal states. A payment expires if unpaid past its window (expires_at), or is cancelled manually from the dashboard.What you do: release held stock / cancel the order. The deposit address is retired and will never be reused.

Amount mismatches

If the customer sends the wrong amount, the payment doesn’t silently succeed — you get explicit events and Tribridge refunds automatically (see Refunds):
Test mode shortcut. In test mode there is no real chain wait — the checkout page exposes a Simulate Payment button that drives the payment straight to completed and triggers your test webhook. Use it to validate your integration end-to-end, including your completed fulfillment logic.