Skip to documentationDocumentation
On this page

invoice.invalid

The announced payment left the chain and the invoice closed unpaid.

An announced, unaccepted payment was dropped or its block was reorged. The invoice closed with invalid_reason describing that observation failure.

Money and processing#

Correlate the payment and transaction identity, and read the invoice for current state. This event does not instruct you to reverse a previously accepted credit. An accepted-payment reversal uses invoice.payment_reversed.

Keep late-payment handling: invalid closure can be followed by a later acceptance.

Schema version 1#

Fields are taken from the public OpenAPI contract. Required nullable fields must be present and may contain null.

  • id · string · Required

    Stable event UUID for merchant-side idempotency. · Format: uuid

  • event_seq · integer · Required

    Global event sequence. Gaps are possible; it does not establish delivery or processing order. · Format: int64

  • type · "invoice.invalid" · Required

    —

  • schema_version · 1 · Required

    —

  • environment · "live" | "test" · Required

    —

  • merchant_id · string · Required

    Format: uuid

  • subject_type · "invoice" · Required

    —

  • subject_id · string · Required

    Format: uuid

  • occurred_at · string · Required

    Canonical business occurrence timestamp. · Format: date-time

  • data · object · Required

    An announced payment left the chain before anything was accepted, and the invoice had no other accepted money. reason says which way it left: payment_dropped for a transaction that was replaced, dropped from the mempool or expired, payment_reorged for one whose block was orphaned. · Unknown properties are rejected

  • data.invoice_id · string · Required

    Format: uuid

  • data.payment_id · string · Required

    Format: uuid

  • data.external_id · string | null · Required

    —

  • data.currency · string · Required

    —

  • data.network · string · Required

    —

  • data.environment · "live" | "test" · Required

    —

  • data.amount_requested · string · Required

    Format: decimal · Pattern: ^\d+(.\d+)?$

  • data.amount_paid · string · Required

    Format: decimal · Pattern: ^\d+(.\d+)?$

  • data.status · "invalid" · Required

    —

  • data.reason · "payment_dropped" | "payment_reorged" · Required

    —

  • data.tx_identity · string · Required

    —

  • data.observed_at · string · Required

    Format: date-time

Example — version 1#

json example
{
  "id": "00000000-0000-0000-0000-000000000001",
  "event_seq": 184203,
  "type": "invoice.invalid",
  "schema_version": 1,
  "environment": "live",
  "merchant_id": "00000000-0000-0000-0000-000000000002",
  "subject_type": "invoice",
  "subject_id": "00000000-0000-0000-0000-000000000003",
  "occurred_at": "2026-09-14T10:00:00Z",
  "data": {
    "invoice_id": "00000000-0000-0000-0000-000000000003",
    "payment_id": "00000000-0000-0000-0000-000000000005",
    "external_id": null,
    "currency": "USDC",
    "network": "ethereum",
    "environment": "live",
    "amount_requested": "25.00",
    "amount_paid": "0",
    "status": "invalid",
    "reason": "payment_dropped",
    "tx_identity": "0x0000000000000000000000000000000000000000000000000000000000000001:0",
    "observed_at": "2026-09-14T10:00:00Z"
  }
}

See delivery and envelope, signature verification, and business processes.