Payment needs a decision
Sent for underpaid, overpaid (together with payment.confirmed), late-payment and manual-review states, and when a transfer arrives after the intent was settled (status_reason: additional_payment_after_settlement).
Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”t=<unix seconds>,v1=<hex> — HMAC-SHA256 keyed with the endpoint’s full whsec_… secret over <t>.<raw request body>. While a rotated secret is still valid, one v1= value is sent per valid secret: accept the delivery if any value matches (constant-time comparison) and reject timestamps outside your tolerance (the official SDKs default to 300 seconds).
Example
t=1760961600,v1=186aa47526353adc39a808f8e0bd84f501a5a6a1f483572b1f8a3eab3ed44cc8Same as event_id in the body. Delivery is at-least-once — deduplicate on this value.
One delivery per event and endpoint; the id stays the same across retries.
1 for the first attempt, incremented on every retry.
Request Bodyrequired
Section titled “Request Bodyrequired”Body of the payment.review_required webhook.
object
object
object
Snapshot of the payment intent right after the transition (data of payment.* events and invoice.awaiting_payment).
object
Machine-readable reason recorded with a payment intent state change (status_reason, state-event and timeline reason, webhook data.status_reason). created and quote_refreshed appear in state events; additional_payment_after_settlement only in payment.review_required event data for a transfer that arrived after the intent was settled; inconsistent_evidence marks evidence that supports no allowed transition (the state is held and operators are alerted). bitcart_* reasons mirror the Bitcart invoice status of intents processed through the platform’s Bitcart account.
Decimal amount in currency, e.g. 59.90.
True for confirmed and overpaid, and for resolved with an accepting resolution — the expected amount is final, so goods may be delivered.
Data of payment.review_required when a transfer arrived after the intent was settled. The intent’s own status does not change; the transfer is recorded for review and never credited automatically.
object
Responses
Section titled “Responses”Any 2xx response within 10 seconds marks the delivery as succeeded. The response body is only kept as a short excerpt for troubleshooting.
default
Section titled “default”Any other outcome — a non-2xx status, a redirect (never followed), a timeout or a network error — is retried with exponential backoff (base × 2^(attempt − 1), capped at 6 hours, with 50–100% jitter; 10 attempts in the default configuration) and then moved to the dead-letter queue. 410 Gone stops retries immediately.