API ReferenceWebhooks

Invoice expired without sufficient payment.

Fired when an invoice reaches its TTL without being fully paid.

Signature: X-Halfin-Signature: t={timestamp},v1={hmac} where hmac = HMAC-SHA256(secret, "{timestamp}.{raw_body}"). Reject if abs(now - timestamp) > 300 seconds.

eventstring

Event type identifier.

Value in"invoice.confirming" | "invoice.paid" | "invoice.overpaid" | "invoice.underpaid" | "invoice.expired" | "invoice.invalid" | "invoice.deposit_reversed"
created_atstring

Event creation timestamp.

Formatdate-time
dataInvoiceWebhookData

Payload data for invoice webhook events (invoice.confirming, invoice.paid, invoice.overpaid, invoice.underpaid, invoice.expired, invoice.invalid, invoice.deposit_reversed).

Phase 4 (multi-fiat plan §D) adds amount_fiat + fiat_currency alongside the legacy amount_usd. Dual emission lets webhook consumers migrate on their own timeline; once the ss_core_webhook_legacy_amount_usd_emitted_total counter drops to zero for 7 consecutive days, Phase 5+ removes the legacy amount_usd field.