Stripe Pending Invoice Items: Billing Between Renewals

Bill Stripe extras before the renewal without moving the billing cycle, and avoid the missing-tax and empty-invoice traps.

Acodei Content Team · 11/14/2026 · 14 min read

You sell a $49 monthly subscription and bill extras on top of it: an onboarding session here, a block of support hours there, a data export the customer asked for. Each extra goes into Stripe as an invoice item and waits for the next renewal. Then a customer racks up $1,200 of extras in the first week of a 30-day cycle, and you realize you will not see a cent of it for three more weeks.

Stripe has a setting for exactly this, pending_invoice_item_interval, and two other ways to get the same money in sooner. Each one produces extra invoices that sit between your regular renewals. The bookkeeping questions follow: why one subscription now generates several invoices a month, why some of them carry no tax, and why your Stripe fees went up.

Every finalized Stripe invoice, synced. Acodei's Invoice Sync creates a QuickBooks invoice when a Stripe invoice is finalized, including the ones that bill pending items between renewals, and applies the payment when it is paid. Start a free trial.

This post covers what a pending invoice item is, the three ways Stripe lets you bill pending items early without moving the billing cycle, the differences between them that matter for your books, and what to check in QuickBooks when a subscription starts producing more invoices than you expected.

What a pending invoice item is

A Stripe invoice item is a one-off charge attached to a customer. Stripe's invoice item object has an invoice field, and when that field is empty the item is pending. In Stripe's words on the subscription invoices guide, "An invoice item appears as pending if it's not attached to any invoice."

Pending items wait for an invoice to pick them up. By default that is the next scheduled one. Stripe's API reference says that when you leave the invoice field blank on a subscription customer, "the invoice item will be added to the next upcoming scheduled invoice." For a monthly subscription, that means the renewal.

Two details shape everything that follows.

The subscription field scopes an item. When you create an invoice item, you can pass a subscription ID. Stripe describes it this way: "When set, scheduled invoices for subscriptions other than the specified subscription will ignore the invoice item." If a customer has two subscriptions, set this field, or an extra for one product can land on the other product's renewal.

Pending items behave differently from subscription lines. Stripe lists two differences. Pending invoice items "are always charged when the billing period ends for any canceled subscription," and they "aren't prorated when a customer's subscription changes." The first is why canceling a subscription does not stop a pending extra from being billed (covered in canceling a Stripe subscription and what reaches QuickBooks). This post is about the opposite problem: billing pending items sooner, while the subscription carries on.

You can see a customer's pending items in the Dashboard on the customer's page, under Pending invoice items.

Three ways to bill pending items before the renewal

Stripe's subscription invoices guide is direct about the options. "Other than changing the billing period, there are a few ways to invoice these items without adjusting the normal subscription service period":

  1. A one-off invoice. Create an invoice for the customer by hand, in the Dashboard or through the API.
  2. A billing threshold. "Charge a subscription whenever the amount due reaches a threshold."
  3. pending_invoice_item_interval. "Specify an interval for how often to bill for any pending invoice items. This is equivalent to having Stripe create a one-off invoice for the subscription on a recurring basis."

All three leave the renewal date where it is. The subscription parameter on invoice creation states it plainly: "The subscription's billing cycle and regular subscription events won't be affected." That is the main reason to use them instead of resetting the billing cycle anchor, which moves every future renewal.

Option 1: a one-off invoice

In the Dashboard, the customer page's Pending invoice items section has an Invoice now button. Stripe describes the dialog it opens: you choose "whether to charge the default source or email the invoice to the customer," and you get "the option to calculate tax automatically."

Through the API, there is a trap. When you create an invoice, the pending_invoice_items_behavior parameter "defaults to exclude if the parameter is omitted," and exclude means "always create an empty invoice draft regardless if there are pending invoice items or not." An integration that creates an invoice and expects it to sweep up the customer's extras gets an empty draft instead. Pass include, or pass the subscription parameter, which tells Stripe to include "pending invoice items for that subscription" only.

Option 2: a billing threshold

A threshold is the usage-billing answer. You set a monetary amount on the subscription, and Stripe raises an invoice when the amount due reaches it. It is built for metered usage, not for one-off extras, and it has its own rules about tiers, resetting the billing cycle and late usage. Our post on Stripe billing thresholds and mid-cycle invoices covers it in detail. The short version for this comparison: a threshold fires on an amount, so the number of extra invoices depends on how much the customer spends.

Option 3: pending_invoice_item_interval

This is a setting on the subscription. It has two parts: interval, which Stripe says is "Either day, week, month or year," and interval_count, "the number of intervals between invoices." Stripe's example is interval=month with interval_count=3, which "bills every 3 months," and it caps the setting at a "maximum of one year interval allowed (1 year, 12 months, or 52 weeks)."

The subscription object then shows next_pending_invoice_item_invoice, which Stripe describes as "the approximate timestamp on which any pending invoice items will be billed." Stripe's own word is approximate, so do not build a close process that depends on it firing at a precise time.

On a $49 monthly plan with interval=week, the customer from the opening gets the $1,200 of extras invoiced at the end of the first week, not at the renewal. The renewal still arrives on its normal date for $49 plus anything added after the last weekly sweep.

How to tell the extra invoices apart

Every Stripe invoice carries a billing_reason, and the invoice object reference lists the values. The three options leave different marks:

How the invoice was createdbilling_reason you will see
Regular renewalsubscription_cycle
Billing threshold reachedsubscription_threshold
pending_invoice_item_intervalautomatic_pending_invoice_item_invoice
One-off invoice from the Dashboard or APImanual

automatic_pending_invoice_item_invoice appears in Stripe's list of possible enum values without its own description, but the name is specific enough to filter on. If you report on subscription revenue by billing_reason, add it to your filter, or a whole category of subscription extras will be missing from the report. Stripe billing_reason and what reaches QuickBooks explains the rest of the values.

manual is the one to watch. Stripe defines it as "Unrelated to a subscription, for example, created via the invoice editor." An invoice you generated by hand to sweep a subscription's extras will look, from billing_reason alone, like a standalone invoice. If you need to tie it back to the subscription, use the subscription ID you passed when you created it, not the billing reason.

The tax rate problem with manual invoices

This is the difference most likely to cause a real error. Stripe's guide warns: "When you manually generate an invoice, Stripe doesn't apply the tax rates you might have established on the subscription. If taxes apply, you must explicitly add the tax rates to the invoice."

So a subscription with a sales tax rate configured, where the renewal invoice shows tax, can produce a one-off invoice for the same customer's extras with no tax line at all. Nothing fails. The invoice finalizes, the customer pays, and you have under-collected tax on that sale.

Two practical fixes, depending on how you bill tax:

  • If you use manual tax rates, set them on the invoice when you create it (default_tax_rates), or on each invoice item (tax_rates). Stripe notes that tax rates set on an item take priority: "When set, the default_tax_rates on the invoice do not apply to this invoice item."
  • If you use Stripe Tax, turn on automatic tax for the invoice. The Dashboard's Invoice now dialog offers it as an option. Do not assume it carries over from the subscription.

Stripe describes pending_invoice_item_interval as "analogous to calling Create an invoice for the given subscription." Stripe's tax warning is written about manually generated invoices. Before you rely on interval invoices in a taxed business, open the first one Stripe generates and check that it carries the tax you expect. One look at a real invoice is worth more than a reading of the docs either way.

In QuickBooks, a missing tax line shows up in your sales tax liability. If you collect tax on renewals but not on extras billed between them, the tax you file will not match the tax your product catalog says you should have charged. Stripe tax rate changes and what breaks in QuickBooks covers how Stripe tax rates map onto QuickBooks sales tax.

What changes in your books

Billing extras early does not change what the customer owes over the month. It changes how many invoices carry it, when the cash arrives, and what each charge costs.

More invoices per customer

A monthly subscription with a weekly pending-item interval can produce up to five invoices in a month: four sweeps and the renewal. In Accounts Receivable, that customer looks busier, with more open invoices if any are sent rather than charged. If you age receivables by invoice, a pile of small extras invoices is easy to misread as a collections problem.

With Acodei's Invoice Sync on, each finalized Stripe invoice becomes its own QuickBooks invoice. Acodei's product documentation describes it reproducing "every line-item, and tax lines, as allowed by the user's mapping settings," and each line uses the product from your product mapping if you have it enabled, or your default product if not. When the Stripe invoice is paid, Acodei creates the payment and applies it to that QuickBooks invoice. So the QuickBooks customer record mirrors Stripe: one invoice per Stripe invoice, renewal and extras alike.

One edge is worth knowing. Acodei's documentation says an invoice whose line items are all $0 is not synced. A sweep that only picks up a $0 item (a free onboarding call logged for the record, say) will not appear in QuickBooks.

More fixed fees

Stripe's standard US price is "2.9% + 30¢ per successful transaction for domestic cards." The percentage is the same whether the extras are billed weekly or at the renewal. The 30¢ is not. Each paid invoice is a separate charge, so a customer billed weekly on a monthly plan pays out of five charges instead of one, and you pay the fixed fee five times.

For the $1,200 week, that is noise. For a customer whose weekly extras are $15, an extra 30¢ a week is 2% of the sweep on top of the 2.9%. Pick the interval for the size of the extras, not just for cash flow.

Very small sweeps

A short interval combined with small extras can produce invoices below Stripe's minimum charge amount. Stripe's invoicing overview says that if an open invoice's amount due "is less than the minimum chargeable amount, the invoice automatically transitions to paid status and Stripe debits the amount from the customer's credit balance." The money is not collected. It moves to the customer's next invoice. The Stripe minimum charge amount entry walks through what that does to the books. The simple prevention is not to use a daily interval for extras that are often under a dollar.

Revenue timing

For revenue recognition, the invoice date is not the whole story. Each invoice item has a period, which Stripe says is "rendered on the invoice" when the start and end differ, and which Stripe Revenue Recognition uses "to recognize and defer revenue." Billing an extra early does not change when the service was delivered. If you run accrual books and the extras are for a service delivered over time, the earlier invoice may need a deferral, just as an annual plan billed upfront does.

A worked example

A design tool charges $49 a month, renewing on the 1st. Extras are billed as invoice items at $90 per support hour, scoped to the subscription. The subscription has pending_invoice_item_interval set to interval=week. The account uses a manual 8% sales tax rate on the subscription.

In November, the customer logs:

  • 6 support hours in week one ($540)
  • nothing in week two
  • 2 hours in week three ($180)
  • 1 hour on the 29th ($90)

Here is what Stripe produces, assuming the interval invoices carry tax correctly (check yours):

Invoicebilling_reasonLinesSubtotalTax at 8%Total
Nov 1 renewalsubscription_cyclePlan$49.00$3.92$52.92
~Nov 8 sweepautomatic_pending_invoice_item_invoice6 support hours$540.00$43.20$583.20
~Nov 22 sweepautomatic_pending_invoice_item_invoice2 support hours$180.00$14.40$194.40
Dec 1 renewalsubscription_cyclePlan + 1 support hour$139.00$11.12$150.12

Week two had no pending items, so this example shows no week-two sweep. Stripe's documentation does not say whether an interval with nothing pending produces an empty invoice. If one does appear, it is a pure $0 invoice, which Acodei's documentation says is skipped rather than synced.

The 1 hour logged on the 29th was still pending when the December renewal was created, so it rides on the renewal, as pending items always do.

Fees on card payments at 2.9% + 30¢:

  • $52.92 → $1.83
  • $583.20 → $17.21
  • $194.40 → $5.94
  • $150.12 → $4.65

Without the interval, all nine hours would have waited for the December 1 renewal: the $49 plan plus $810 of hours and $68.72 of tax, one $927.72 charge with a $27.20 fee. With the interval, the two sweeps and the smaller renewal cost $17.21 + $5.94 + $4.65 = $27.80. The difference is 60¢, two extra fixed fees, in exchange for collecting $777.60 one to three weeks earlier.

Common mistakes

  1. Creating an API invoice without pending_invoice_items_behavior=include or a subscription. You get an empty draft, and the extras wait for the renewal.
  2. Leaving the subscription field blank on items for a customer with two subscriptions. The item goes to "the next upcoming scheduled invoice," which may be the wrong product.
  3. Assuming a manual invoice inherits the subscription's tax. Stripe says it does not. Add the tax rates, or turn on automatic tax.
  4. Reporting subscription revenue on subscription_cycle only. Interval invoices use automatic_pending_invoice_item_invoice, and hand-made sweeps use manual.
  5. Choosing an interval shorter than the extras justify. Small, frequent sweeps add fixed fees and can fall under the minimum charge amount.

Frequently asked questions

What is a pending invoice item in Stripe?

An invoice item that is not attached to any invoice yet. Stripe's guide says an item "appears as pending if it's not attached to any invoice." On a subscription customer, a pending item is added to the next scheduled invoice unless you bill it sooner.

What does pending_invoice_item_interval do?

It tells Stripe to bill a subscription's pending invoice items on a schedule between renewals. Stripe says it is "analogous to calling Create an invoice for the given subscription at the specified interval." You set interval (day, week, month or year) and interval_count, up to a maximum of one year.

Does billing pending items early change the subscription's billing cycle?

No. Stripe states that when you create an invoice for a subscription's pending items, "The subscription's billing cycle and regular subscription events won't be affected." Renewals keep their normal dates.

Why does my one-off Stripe invoice have no tax?

Stripe does not copy the subscription's tax rates onto an invoice you generate manually. Its guide says that if taxes apply, "you must explicitly add the tax rates to the invoice." Set default_tax_rates on the invoice, tax_rates on the items, or turn on automatic tax.

How do invoices from pending_invoice_item_interval show up in QuickBooks?

With Acodei's Invoice Sync, each finalized Stripe invoice becomes its own QuickBooks invoice with its lines reproduced as your mapping allows, and its payment is applied to it when the Stripe invoice is paid. A weekly interval on a monthly plan can mean several QuickBooks invoices a month for one customer. An invoice made up only of $0 lines is not synced.

The point

pending_invoice_item_interval is a cash-flow setting. It gets you paid for extras sooner without touching the renewal date, at the cost of more invoices and more fixed fees. The things that go wrong are quiet: a manual invoice with no tax, an API invoice that came out empty, an extra that landed on the wrong subscription, a revenue report that misses a billing_reason. Check the first interval invoice by eye, scope every item to its subscription, and make sure QuickBooks receives the same invoices Stripe produced.

Extras billed between renewals, synced as they happen. Acodei syncs finalized Stripe invoices into QuickBooks Online and applies each payment to the invoice it paid. 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.