Stripe Invoice Finalization Grace Period and QuickBooks

Stripe holds usage invoices in draft for 1 to 72 hours to catch late usage. Which invoices it covers, what goes unbilled, and what it means in QuickBooks.

Acodei Content Team · 11/12/2026 · 13 min read

A usage-based subscription renews at midnight on the first of the month. Stripe creates the invoice for the period that just ended, and then, for an hour, nothing happens. The invoice sits in draft. Your product is still sending usage for last month: the API calls that were in flight at midnight, the batch job that runs at 00:15, the overnight import that always arrives late. Some of that usage will make it onto the invoice. Some of it will be counted by Stripe and never billed to anyone.

The hour is Stripe's invoice finalization grace period. It is configurable up to 72 hours, it has rules, and it has limits that are easy to miss. For a bookkeeper, it decides two things: how much of a period's usage is actually billed, and when the invoice that bills it becomes final.

Book the invoice Stripe finalized, not the draft. Acodei's Invoice Sync creates the QuickBooks invoice when the Stripe invoice is finalized, with every line item reproduced as your mapping settings allow. Start a free trial.

This post covers what the grace period is, how to change it, which invoices it applies to, the three ways late usage goes unbilled, and what it means for the invoice date and the month-end close in QuickBooks.

What the grace period is

Stripe's documentation on configuring the finalization grace period opens with the rule:

"All invoices have a default finalization grace period of 1 hour. During the finalization grace period, you can continue to report usage for the previous billing period."

Every Stripe invoice starts as a draft and becomes open when it is finalized. While it is a draft it can still change. After finalization, Stripe's invoice status documentation says, you "can't change most of its details, including fields related to the amount or customer", and changing the amount afterwards takes a credit note.

The grace period is the gap between the two. For invoices with automatic collection, it is the delay between Stripe creating the invoice and finalizing it, and Stripe uses it to pick up usage that belongs to the period but arrived late. In Stripe's words: "During finalization, Stripe updates the invoice to reflect the latest quantity for its billing period."

You can see the gap on any draft invoice. The invoice object's automatically_finalizes_at field is "the time when this invoice is currently scheduled to be automatically finalized", and Stripe's scheduled finalization guide confirms that subscription invoices "are already scheduled for finalization upon invoice creation, based on the configurable grace period you currently have set."

Changing it: the default, the rules and the 72-hour ceiling

The setting lives in the Dashboard under the Invoice finalization grace period section of the invoice settings page. There are two layers.

The account default. It starts at 1 hour. You can change it to anything up to 72 hours (3 days). Stripe adds one sensible guard: "Don't specify a value that's longer than your service period. For example, if your service period is daily, don't set a grace period greater than or equal to 24 hours."

Rules. A rule applies a different delay to a group of invoices. Stripe offers two conditions, which you can combine:

Rule conditionWhat it targets
Invoice is from a subscription cycleInvoices generated at the end of a subscription service period
Has a metered priceInvoices with usage-based products
Both conditions togetherUsage-based invoices from a subscription service period

Rules are applied in an order you control, and the default is always applied last. When an invoice matches more than one rule, Stripe takes the longer delay: "if an invoice includes one line item for a usage-based product (72 hours) and a simple subscription product (1 hour), the invoice finalizes after 72 hours."

One exception overrides everything: "The first invoice generated by a subscription set to charge automatically finalizes immediately, regardless of the rules you configure." A new subscriber's first invoice has no grace period at all.

The other reason an invoice waits: webhooks

The grace period is not the only thing that holds a draft open. Stripe also waits for your webhook endpoints. If Stripe does not receive a successful response to the invoice.created event, it delays finalizing "all invoices with automatic collection for up to 72 hours". That behavior, and the 1-hour wait after a successful response, is covered in detail in Stripe automatic collection and the invoice nothing is chasing.

The two can look identical from the outside: a draft invoice that should have been charged by now. They are different causes with different fixes. A configured grace period is a choice, visible in your invoice settings. A webhook delay is a failing endpoint, and Stripe emails you about it. The one exception is an invoice with a custom scheduled finalization time: Stripe says that "finalization won't be delayed because of invoice.created webhook failures" for those.

Which invoices pick up late usage

This is the part that catches people. A longer grace period does not help every invoice. Stripe limits it to two kinds:

  • "Invoices generated at the end of a subscription service period."
  • "Invoices generated by subscription schedule phase transitions that modify metered items."

"All other invoices use the usage recorded before invoice creation, even if a finalization grace period is configured." That includes threshold invoices, which Stripe says "reflect only the usage accrued up to the point the invoice is created."

There is also a timestamp test. Usage is added to a draft invoice only if the invoice is still a draft and the usage timestamp "is within the service period for the invoice." Usage timestamped after the draft was created is not lost: "we append the usage to the next invoice."

So the grace period is specifically for usage that happened during the old period but was reported after it ended. Usage that happened in the new period goes to the next invoice, as it should.

Three ways late usage never gets billed

Most of the grace period's behavior is about putting usage on the right invoice. Three documented cases put it on no invoice at all.

1. It arrives after the grace period ends. Stripe is direct about this: "Stripe can accept usage reported beyond the grace period and include it in meter summaries, but we don't add that usage to the finalized invoice or the next invoice." The usage is recorded against the billing meter. Your meter summaries show it. Nobody is billed for it. If you compare your product's usage logs to your Stripe invoices, this is one of the gaps you will find.

2. The price changed during the period. If a subscription item's price changed mid-cycle, for example through an upgrade or a price update, "the grace period doesn't capture late usage. Stripe skips invoice recomputation during finalization, so any usage reported during the grace period doesn't appear on current or subsequent invoices." Stripe notes this affects both classic and flexible billing modes. Price changes on usage subscriptions have other side effects, covered in Stripe usage billing when the price changes mid-period.

3. The invoice was not a cycle or phase-transition invoice. Threshold invoices and other non-cycle invoices bill only what was recorded when they were created, whatever the grace period says.

None of the three produces an error. The meter event was accepted, so there is no failed event to find. That makes them different from usage Stripe rejects outright, such as events timestamped more than 35 days in the past, which are covered in Stripe meter events that never billed.

A worked example

A customer pays a flat 200 USD a month plus 0.01 USD per API call, billed monthly on the first. Their subscription has had no price changes this period, and your account uses Stripe's default 1-hour grace period.

  • November 30, 23:58 UTC. 4,000 API calls happen. Your system batches usage and reports it every 15 minutes.
  • December 1, 00:00 UTC. The November period ends. Stripe creates the cycle invoice as a draft. automatically_finalizes_at is 01:00.
  • December 1, 00:15 UTC. Your batch reports the 4,000 calls with their November 30 timestamps. The invoice is still a draft and the timestamps are inside the November service period, so the usage is eligible. At finalization, Stripe updates the invoice to the latest quantity.
  • December 1, 01:00 UTC. The invoice is finalized and becomes open, and Stripe begins collecting payment.
  • December 1, 03:00 UTC. A nightly reconciliation job finds 10,000 November calls it never reported and sends them. The invoice is already finalized. Stripe accepts the events and includes them in meter summaries, but does not bill them on this invoice or the next one. That is 100 USD of November revenue that will not appear on any invoice.

With a 72-hour grace period, the 03:00 batch would have made it onto the invoice, and the invoice would have finalized on December 4 instead of December 1. The customer would have been charged three days later. Whether that trade is worth it is a business decision, but it should be made deliberately, by someone who knows when your late usage actually arrives.

What the grace period means in QuickBooks

From QuickBooks' point of view, a draft Stripe invoice is not a final document. It can still change, so it is not the thing to book. The invoice to record is the finalized one, and that is what the grace period delays.

On the Acodei side, Invoice Sync's documentation describes the QuickBooks invoice being created when the Stripe invoice is finalized, reproducing every line item and the tax lines as the account's mapping settings allow. So the QuickBooks invoice follows the Stripe invoice as it was finalized, including any usage added during the grace period. Invoice Sync works from the invoice, and its documentation describes no reading of meters or usage records, so usage that never reached the Stripe invoice does not reach QuickBooks either. Revenue Stripe did not bill has to be fixed in Stripe.

Which date the invoice carries

Look at the dates on a cycle invoice for November usage and every one of them is in December. Stripe created it on December 1. It was finalized on December 1 with the default grace period, or as late as December 4 with a 72-hour one. Stripe's effective_at field, "the date when this invoice is in effect", is "same as finalized_at unless overwritten."

Acodei's admin advanced features include options that control which Stripe date becomes the QuickBooks invoice date: one uses the Stripe due date, one uses effective_at when present, and one uses the Stripe supply date. Separate options write the invoice date or the supply date into the QuickBooks service date field. Each puts a different date on the same invoice, so it is worth knowing which one applies to your account before you build month-end reports around the QuickBooks invoice date.

The month-end close

That has two consequences for the close.

Usage revenue lands a month late unless you accrue it. If you report revenue by invoice date, November's usage shows up in December. If you close on an accrual basis and need it in November, that is an accrual entry in QuickBooks, reversed when the December-dated invoice arrives. This is true with any grace period. The grace period just affects when you know the final number.

Do not estimate the accrual from a draft. During the grace period, the draft invoice understates the period's usage, because late usage is still arriving. Wait until the invoice is finalized, then take the usage figure from the finalized invoice. With a 72-hour grace period, that means waiting until the fourth of the month for invoices created on the first.

What to check in your own account

Know when your late usage arrives. Look at when your systems report usage relative to the period end. If anything runs after the grace period, such as a nightly batch or a retry queue, it is producing unbilled usage. Either move it earlier or lengthen the grace period.

Read your rules, not just the default. A rule for metered invoices may already set a longer delay than the 1-hour default you see first. Check the rule order too.

Keep the grace period shorter than the service period. Stripe's own example: a daily service period needs a grace period under 24 hours.

Watch for price changes on usage subscriptions. A mid-cycle upgrade on a metered item switches off grace-period usage for that subscription's invoice. If your late usage is material, schedule price changes for the period boundary.

Separate grace-period drafts from stuck drafts. If automatically_finalizes_at is in the past and the invoice is still a draft, the grace period is not the cause. Check your webhook endpoints, and if Stripe Tax is on, whether the customer has enough tax information: Stripe's scheduled finalization guide says automatic finalization fails without it.

Close from finalized invoices. Run your usage accrual from finalized Stripe invoices, after the grace period has passed.

Frequently asked questions

What is Stripe's invoice finalization grace period?

It is the delay between Stripe creating an invoice with automatic collection and finalizing it. The default is 1 hour. During it, you can still report usage for the billing period that just ended, and Stripe updates the invoice to the latest quantity when it finalizes.

How long can the Stripe finalization grace period be?

Up to 72 hours (3 days). You set an account default and can add rules for invoices from a subscription cycle, invoices with a metered price, or both. When an invoice matches several rules, Stripe uses the longest delay. Stripe advises keeping the grace period shorter than the service period, so a daily subscription needs less than 24 hours.

Does the grace period apply to the first invoice of a subscription?

No. Stripe states that the first invoice generated by a subscription set to charge automatically finalizes immediately, regardless of the rules you configure.

What happens to usage reported after the grace period ends?

Stripe accepts it and includes it in meter summaries, but does not add it to the finalized invoice or to the next invoice. It is recorded and not billed. Usage timestamped after the draft invoice was created is different: Stripe appends it to the next invoice.

Do threshold invoices include usage reported during the grace period?

No. Only subscription cycle invoices and subscription schedule phase transition invoices for metered items include grace-period usage. Threshold invoices and other invoices reflect only the usage recorded up to the moment they were created.

What date does the QuickBooks invoice get for a usage invoice?

The Stripe invoice that bills a period's usage is created when that period ends and finalized after the grace period, so its dates fall in the following period. With Acodei, admin options control whether the QuickBooks invoice date follows the Stripe due date, effective_at or the supply date. If you need the usage revenue in the period it was earned, record an accrual at month-end.

What if the usage invoice has nothing on it?

If a cycle invoice ends up containing only $0 line items, Acodei's Invoice Sync does not sync it, so no QuickBooks invoice is created. An invoice with $0 due but at least one line above $0 is covered by a separate admin option, Enable $0 Invoices.

The short version

Stripe's finalization grace period is the window, 1 hour by default and up to 72, in which a usage invoice is still a draft and late usage for the old period can still be added. It only works for subscription cycle and phase-transition invoices, it is switched off by mid-cycle price changes, and usage that arrives after it is counted but never billed. In QuickBooks, the invoice that matters is the finalized one, it is dated after the period it bills, and a month-end accrual should be built from finalized invoices, not drafts.

Close the month on the invoices Stripe actually finalized. Acodei syncs Stripe sales, payments, refunds and payouts into QuickBooks Online, and with Invoice Sync on it creates each QuickBooks invoice from the finalized Stripe invoice. Start a free trial.

Share

Automate your Stripe to QuickBooks sync

Save hours every month. Acodei automatically syncs your Stripe transactions, invoices, and payouts to QuickBooks Online.

14-day free trial · card required · cancel anytime

How Acodei handles this in your stack

Stripe QuickBooks Integration

See how Acodei syncs Stripe payments, fees, refunds, invoices, and payouts into QuickBooks Online automatically.

Or go straight to a capability

Get more operational finance guides like this one

We will only send high-value product and finance content.