# Invoice.overdue

URL: /business/events/Invoice.overdue · Id: `event:Invoice.overdue`

> An open Invoice passed its due date unpaid, or a retry on the Startup’s retry schedule failed.

An open [Invoice](/business/nouns/invoice) passed its `due` date unpaid, or a retry on the [Startup](/business/nouns/startup)’s retry schedule failed.

| Property | Value |
| --- | --- |
| Raised by | No Verb: a clock raises it |
| Noun | [Invoice](/business/nouns/invoice) |
| Moves | [Invoice](/business/nouns/invoice) `open` to `uncollectible` when every retry on the Startup’s retry schedule has failed; [Subscription](/business/nouns/subscription) `active` to `pastDue` when the Invoice bills this Subscription; [Subscription](/business/nouns/subscription) `pastDue` to `canceled` when every retry on the Startup’s retry schedule has failed |
| Wakes | None. |

### Payload
Each delivery is an [Event](/business/nouns/event) record. `data` holds the Invoice as it stands.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | `string` | Yes | `Invoice.overdue`. |
| `at` | `datetime` | Yes | When it happened. |
| `seq` | `integer` | No | Its position in the namespace, one more than the Event before; any seq is a cursor into the history. |
| `data` | `json` | Yes | The Thing as the Action left it. |
| `data.invoice` | [Invoice](/business/nouns/invoice) | Yes | The Invoice as the change left it. |
| `data.invoice.total` | `money` | Yes | The amount due. |
| `data.invoice.due` | `date` | Yes | When payment is due. |
| `data.invoice.paidAt` | `datetime` | No | When it was paid. |
| `data.invoice.status` | `string` | No | One of `draft`, `open`, `paid`, `void`, or `uncollectible`. |
| `data.invoice.collection` | `string` | No | `charge` charges the saved payment method; `send` sends the Invoice and waits for a transfer. `charge` by default. |
| `data.invoice.terms` | `integer` | No | Days from issue until a `send` Invoice is due, such as 30; sets `due`. |
| `data.invoice.purchaseOrder` | `string` | No | The Customer’s purchase order number, printed on the Invoice. |
| `data.invoice.refunded` | `money` | No | The total returned to the Customer, from zero up to the amount paid. |
| `data.invoice.number` | `string` | No | The Invoice number, sequential per Startup and never reused, voided Invoices included. |
| `data.invoice.lines` | `json` | No | Each Offer billed: its quantity, Period and amount, with any Coupon or Credit Grant applied. |
| `data.invoice.pdf` | `url` | No | The Invoice, or its receipt once paid, as a PDF on the Startup’s Domain that names the seller of record. |
| `data.invoice.payUrl` | `url` | No | The page on the Startup’s Domain where the Customer pays it by card or bank transfer. |
| `data.attempt` | `integer` | Yes | Which retry failed; 0 when the due date passed. |
| `data.nextRetryAt` | `datetime` | No | When the next retry runs; empty after the last one. |

### Example
```json
{
  "$id": "https://api.sb/leaseline.app/events/evt_mzIP2xFQZY",
  "$type": "Event",
  "name": "Invoice.overdue",
  "at": "2026-10-14T08:00:00Z",
  "data": {
    "invoice": {
      "$id": "https://api.sb/leaseline.app/invoices/inv_FXANyzQojc",
      "$type": "Invoice",
      "total": {
        "amount": 29,
        "currency": "USD"
      },
      "due": "2026-10-13",
      "status": "open",
      "collection": "charge",
      "terms": 0,
      "refunded": {
        "amount": 0,
        "currency": "USD"
      },
      "number": "LEAS-0018",
      "lines": [
        {
          "offer": "offer_2hzYe1ERo0",
          "quantity": 1,
          "period": "2026-10",
          "amount": {
            "amount": 29,
            "currency": "USD"
          }
        }
      ],
      "pdf": "https://leaseline.app/invoices/LEAS-0018.pdf",
      "payUrl": "https://leaseline.app/pay/LEAS-0018"
    },
    "attempt": 1,
    "nextRetryAt": "2026-10-22T12:00:00Z"
  },
  "seq": 82
}
```