---
title: "Invoice Statuses Compared: Stripe vs Xero vs QuickBooks Online"
short_title: "Invoice Statuses: Stripe vs Xero vs QuickBooks"
description: "Stripe has 5 invoice statuses, Xero 6, QuickBooks Online tracks 10+. When an invoice becomes permanent, when it can only be voided, and what each status means."
date: 2026-09-24
products: Stripe Invoicing=https://stripe.com/invoicing; Xero=https://www.xero.com; QuickBooks Online=https://quickbooks.intuit.com
faq: What are the Stripe invoice statuses?=Stripe invoices are draft, open, paid, void or uncollectible. All invoices start as draft; paid and void are terminal. || Can you delete an invoice in Stripe?=Only a draft that isn't part of a subscription. Once finalized an invoice can't be deleted — to cancel it you change its status to void. || What do Xero's SUBMITTED and AUTHORISED statuses mean?=SUBMITTED puts an invoice in the Awaiting approval tab and creates no journals. AUTHORISED puts it in the Awaiting payment tab, shows as Approved in Xero, and creates journals so it appears in reports. || What invoice statuses does QuickBooks Online show?=Open, Not sent, Sent, Viewed, Partially paid, Paid, Deposited, Not deposited, Undelivered or Delivery error, Voided, and Overdue for an open invoice past its due date.
---

# Invoice Statuses Compared: Stripe vs Xero vs QuickBooks Online

<p class="meta">Researched and verified against each product's own documentation on 2026-09-24.</p>

:::tldr
**Short answer:** Stripe invoices are `draft`, `open`, `paid`, `void` or `uncollectible`. Xero's API uses `DRAFT`, `SUBMITTED`, `AUTHORISED`, `PAID`, `VOIDED` and `DELETED`. QuickBooks Online shows ten or more statuses that mix payment, delivery and banking. In all three, the key moment is when an invoice stops being a draft: after that it can't be deleted, only voided.
:::

## The statuses side by side

| Stage | Stripe | Xero (API → what users see) | QuickBooks Online |
|---|---|---|---|
| Being written | `draft` | `DRAFT` → Draft | Not sent |
| Waiting for sign-off | — | `SUBMITTED` → Awaiting approval | — |
| Issued, unpaid | `open` | `AUTHORISED` → Awaiting payment / "Approved" | Open, Sent |
| Customer opened it | — | — | Viewed |
| Part paid | (still `open`) | (still `AUTHORISED`) | Partially paid |
| Overdue | (a "Past due" badge on `open`) | — | Overdue |
| Paid | `paid` | `PAID` | Paid → Deposited / Not deposited |
| Written off as bad debt | `uncollectible` | — | — |
| Cancelled after issue | `void` | `VOIDED` | Voided |
| Removed before issue | (deleted) | `DELETED` | — |

## Stripe: finalizing is the point of no return

Stripe's five statuses each come with a list of what you are still allowed to do. The rule that matters most sits between `draft` and `open`.

A draft is fully editable: "All invoices start in draft status." You can delete it too, "unless it’s associated with a subscription." But once finalized, it is locked: "You can’t delete a finalized invoice. To cancel it, change its status to void."

Voiding is not deleting. "Voiding an invoice maintains a paper trail, which allows you to look up the invoice by number. Voided invoices are treated as zero-value for reporting purposes, and aren’t payable."

Stripe is the only one of the three with a status for bad debt. `uncollectible` means "The customer is unlikely to pay the invoice. Normally, you treat it as bad debt in your accounting process." It exists so you can track the amount owed for reporting while admitting you won't get it.

And "past due" is not a Stripe invoice status. "In the Dashboard, invoices in open status can display a different badge, such as Past due or Retrying" — the status underneath is still `open`.

## Xero: an approval step, and the moment it hits your books

Xero is the only one of the three with an approval stage built into the status list. Its developer documentation defines the three statuses you can set:

> **DRAFT:** "No journals are created, meaning the details of these invoices won’t be used in any reports."
>
> **SUBMITTED:** "This status is used if there’s an approval process required on the invoice. The invoice will be posted to the “Awaiting approval” tab in Xero."
>
> **AUTHORISED:** "This status assumes there’s no approval process required and that the invoice is ready to be sent to the customer. The invoice will be posted to the “Awaiting payment” tab in Xero."

Two things follow. First, the name changes between the API and the app: "the terminology will differ in Xero and show as Approved." Second, `AUTHORISED` is when the invoice becomes accounting: "Authorised invoices will create journals in Xero, so all details will be used in reports."

Xero publishes the exact transitions allowed. Drafts and submitted invoices can move freely between each other, be authorised, or be `DELETED`. An authorised invoice has only one way out: `VOIDED`. There is no path from `AUTHORISED` back to `DRAFT` or to `DELETED`. And if you don't send a status at all, "the API will default the invoice status to DRAFT."

## QuickBooks Online: statuses that track the whole trip

QuickBooks Online's statuses cover more than the invoice itself. Its help centre lists:

| Status | QuickBooks' definition |
|---|---|
| Open | "The invoice has an open balance." |
| Not sent | "You created the invoice, but didn't send it to the customer." |
| Sent | "You emailed the invoice to the customer." |
| Viewed | "Your customer opened the invoice." |
| Partially paid | "Your customer made a partial payment." |
| Paid | "Your customer paid the invoice in full." |
| Deposited | "The bank deposit for the invoice payment is recorded in QuickBooks." |
| Not deposited | "The invoice is paid, but the bank deposit isn't recorded in QuickBooks." |
| Undelivered or Delivery error | "The invoice was undelivered." |
| Voided | "The invoice was voided in QuickBooks." |

Overdue means "the invoice has an open balance and is past the due date."

This is the only one of the three that tells you whether the customer **opened** the invoice (Viewed), whether the email **bounced** (Undelivered), and whether the money has **reached the bank** (Deposited vs Not deposited). Stripe and Xero stop at "paid."

## What to take from this

1. **Pick your point of no return deliberately.** All three let you delete a draft and only void an issued invoice. That isn't a UI choice — it's what keeps invoice numbers continuous and an audit trail intact. Copy it.
2. **Separate "paid" from "money in the bank."** QuickBooks splits them because they are different moments for an accountant. If your users reconcile, you'll need both.
3. **Decide whether overdue is a status or a view.** Stripe shows it as a badge on `open`; QuickBooks shows it as its own status. A status needs updating when the date passes. A computed view doesn't.

## Method and limits

Stripe's statuses and rules are from its invoicing documentation; Xero's from its developer "Invoice Status" guide and its official OpenAPI specification on GitHub; QuickBooks Online's from its help article on tracking invoice status. All were read on 2026-09-24. QuickBooks' article is written for its mobile app; labels in other editions may differ. We have no affiliation with any of the three.

## Sources

- Stripe — [Invoicing overview: invoice statuses](https://docs.stripe.com/invoicing/overview)
- Xero — [Invoice Status (developer best practices)](https://developer.xero.com/documentation/best-practices/user-experience/invoice-status/)
- Xero — [Official Accounting API OpenAPI spec](https://github.com/XeroAPI/Xero-OpenAPI/blob/master/xero_accounting.yaml)
- QuickBooks — [Track the status of invoices](https://quickbooks.intuit.com/learn-support/en-us/help-article/mobile-apps/track-status-invoices-quickbooks-online-mobile-app/L94Lx4kcz_US_en_US)

---

*Researched by [SaaSReadyit](https://saasreadyit.com), which writes AI-generated validation reports for software ideas. Related: [Subscription statuses compared](https://saasreadyit.com/blog/subscription-statuses-stripe-paddle-chargebee.html) · [The status that gets you paid](https://saasreadyit.com/blog/the-status-that-gets-you-paid-invoice-ninja-tutorcruncher-fresha.html).*
