Glossary
Hosted Invoice Page
The Stripe hosted invoice page is the secure, Stripe-hosted web page for a single finalized invoice, where your customer can see what they owe, pay it with any payment method you have enabled, and download PDF copies of the invoice and its receipt.
Also called: Stripe hosted invoice page, hosted_invoice_url, Stripe invoice payment page, Stripe invoice link
Definition
When you invoice a customer through Stripe rather than charging a saved card, the hosted invoice page is where the money actually changes hands. The customer clicks a link in an email, lands on a Stripe page branded with your logo and colors, and pays.
Stripe describes it as a secure, private URL where your customers can view the details, amounts and status of the invoice, pay it using any of the enabled payment methods, and download PDF copies of the invoice and receipt. Every invoice gets its own unique URL, built around a long random identifier, and Stripe hosts the page, so no code is needed to collect payment this way.
For bookkeeping, the page matters for two reasons that have nothing to do with design. Its URL only exists once the invoice is finalized, which is the same moment the invoice becomes a real receivable. And its URL expires on a schedule, which makes it a poor thing to store as evidence.
Key points
- +Customers can view the invoice, pay it with any enabled payment method, and download PDF copies of the invoice and receipt.
- +The URL is exposed on the Invoice object as hosted_invoice_url, which Stripe states is null until the invoice has been finalized.
- +Invoice URLs expire 30 days after the due date, or 30 days after finalization if there is no due date. The window is never longer than 120 days.
- +A URL you get fresh from the Dashboard or the API is guaranteed to work for at least 10 days, even after expiry.
- +Partial payments on the hosted invoice page are off unless you enable them in your Dashboard invoice settings.
- +The page carries your branding: brand color, logo and icon.
- +Adaptive Pricing can let customers pay in their local currency on the hosted invoice page.
The URL appears at finalization, not at creation
A draft Stripe invoice has no hosted page. The Invoice object reference is explicit on both of the customer-facing links: hosted_invoice_url is "the URL for the hosted invoice page, which allows customers to view and pay an invoice", and invoice_pdf is "the link to download the PDF for the invoice". Of each, Stripe says the same thing: "If the invoice has not been finalized yet, this will be null."
That timing is more useful than it looks. Finalization is the point at which a Stripe invoice stops being editable and becomes something a customer owes. So the existence of a hosted invoice URL is a quick, reliable signal that you are looking at a real receivable rather than a draft someone is still working on.
It also explains a common support question. If a customer says the link in their email does not work and the invoice in your Dashboard is still a draft, nothing is broken. There is no page yet to link to.
The link expires, and the expiry is not what most people assume
Stripe states the rule precisely: "Invoice URLs expire 30 days after the due date. If the invoice doesn’t have a due date, the invoice expires 30 days after it finalizes. In all cases, the expiration window is never longer than 120 days."
Read the last sentence twice. Even an invoice with terms of 180 days does not get a link that lasts 210 days. The ceiling is 120.
What happens after expiry depends on who is asking. A customer following an expired link is redirected to a page that says the URL has expired and gives your business contact information. Where the invoice was sent by email, Stripe instead sends them to a recovery page where they can enter their email address and receive a new copy of the original email with working links. Stripe also guarantees that any URL the Dashboard displays, or that you retrieve through the API, stays valid for at least 10 days even after expiration.
One case behaves differently. Stripe says that when a non-browser client such as a script requests an expired PDF download URL, it returns a 400 error with a URL expired body rather than a redirect, so an integration can detect the expiry and re-request the invoice for a fresh URL.
The practical lesson for anyone keeping records: the invoice does not expire, the link does. Store the invoice number or ID, and fetch a current link when you need one.
Partial payments change how many payments one invoice produces
By default, the hosted invoice page collects one payment for the amount due. Stripe does support partial payments on the page, but it is a setting you turn on: to accept partial payments on the hosted invoice page, you enable them in the Invoice settings page of the Dashboard.
Once enabled, a customer can pay a custom amount toward the invoice rather than the full balance at once. Stripe records each payment on the invoice, updates the amount paid and amount remaining as payments succeed, and moves the invoice to paid only when it is fully paid. In the meantime your customer sees the remaining amount and a partially paid status in their customer portal.
For your books, that means one invoice can be settled by several payments on different days. Before you switch it on, check how those payments will reach your accounting system, because a flow built around one invoice and one payment is not the same as a flow that has to apply three payments to one receivable.
There is a related trap Stripe documents. If an invoice has more than one open payment, it is possible to overpay it, and Stripe credits any excess to the customer’s credit balance rather than refunding it.
When customers pay somewhere other than the page
Not every invoice is paid through its hosted page. A customer might send a wire or a check against a Stripe invoice, and someone on your team then marks the invoice as paid in the Dashboard.
That is a legitimate workflow, but it is a different event from a payment on the page. Stripe even tracks it separately on the invoice, as the amount paid outside of Stripe. The money went straight to your bank, so the invoice says paid while nothing arrives in your Stripe balance or in a Stripe payout.
This is the reason to decide deliberately how paid-outside-Stripe invoices should appear in your books, rather than discovering later that your receivables and your Stripe payouts disagree about the same customer.
How the hosted invoice page relates to Acodei Invoice Sync
Acodei’s Invoice Sync mirrors Stripe invoices and their payments into QuickBooks Online, and its trigger lines up with the hosted page. When a Stripe invoice is finalized, which is the moment its hosted invoice URL comes into existence, Acodei creates a QuickBooks Invoice that reproduces every line item and tax line allowed by your mapping settings, stores the Stripe ID against the QuickBooks invoice ID, and applies suffix rules to avoid duplicate numbers.
When the invoice is paid, whether by a successful charge, a manual payment where your settings allow it, or a credit balance offset, Acodei creates a QuickBooks Payment Receipt or Credit Memo and applies it to that invoice. Automatic application depends on QuickBooks Automatic Application being on, which Acodei’s own guidance recommends keeping enabled.
For invoices your team marks paid in Stripe because the customer paid by wire or check, the Payments Marked as Paid Outside Stripe setting generates a payment in QuickBooks, and it can route that payment to Undeposited Funds regardless of your normal holding account. It is off by default, and Acodei’s guidance is to avoid marking invoices paid outside Stripe unless it is truly necessary.
Stripe fees are never added to the QuickBooks invoice, because they would stop its total matching the Stripe invoice. They are handled through sales receipts, deposits or expenses according to your fee settings.
See when a paid hosted invoice reaches QuickBooks, from finalization through the applied payment.
Want to see this on your own Stripe data?
Start a free trialFrequently asked questions
What is the Stripe hosted invoice page?
It is a Stripe-hosted web page for one finalized invoice. Your customer can view the invoice details, amounts and status, pay it with any payment method you have enabled, and download PDF copies of the invoice and the receipt. Stripe gives every invoice its own unique URL, and the page carries your brand color, logo and icon.
Why is hosted_invoice_url null on my Stripe invoice?
Because the invoice has not been finalized. Stripe documents both hosted_invoice_url and invoice_pdf as null until finalization. A draft invoice has no customer-facing page yet. Finalize it, manually or through automatic advancement, and both links are populated.
How long does a Stripe hosted invoice link last?
Stripe states that invoice URLs expire 30 days after the due date, or 30 days after finalization if the invoice has no due date, and that the expiration window is never longer than 120 days. A URL you get fresh from the Dashboard or the API is guaranteed to work for at least 10 days even after that, so fetch a current link rather than reusing an old one.
Can customers make a partial payment on the hosted invoice page?
Yes, if you enable it. Stripe says that to accept partial payments on the hosted invoice page you enable partial payments in the Invoice settings page of the Dashboard. The invoice stays open, tracks the amount remaining, and moves to paid only when it is fully paid.
Does Acodei create the QuickBooks invoice before the customer pays?
Yes, with Invoice Sync on. Acodei creates the QuickBooks Invoice when the Stripe invoice is finalized, which is the same point at which the hosted invoice page becomes available to your customer. The payment is created and applied to that invoice later, when the Stripe invoice is paid.
What customers say about running Stripe through Acodei

“If you're testing out all the different Stripe/QuickBooks integration apps right now, let me save you some time. This one is the best one by far.”
“Works well and is really helpful for massive transactions. The support is really fast and helpful. 100% recommended.”
Related reading
- Stripe Invoice Status
- Stripe partial payments on invoices in QuickBooks
- Stripe automatic collection and your QuickBooks A/R
- Stripe audit trail in QuickBooks
More glossary terms
- Undeposited Funds
- Stripe Balance Transaction
- Available vs Pending Balance
- Stripe Dispute
- Stripe Dispute Evidence
- Stripe Fee
- Stripe Balance Adjustment
- QuickBooks Credit Memo
- Stripe Tax
- QuickBooks Tax Code
- Stripe Reserve
- Stripe Tax Rate
- Stripe Fee Credit
- Stripe Credit Note
- QuickBooks Product/Service Item
- Stripe Payout
- QuickBooks Sales Receipt
- QuickBooks Bank Deposit
- QuickBooks Transfer
- Stripe Authorization Hold
- QuickBooks Refund Receipt
- QuickBooks Payment
- QuickBooks Expense
- QuickBooks Journal Entry
- Stripe Financial Account
- Holding Account
- Accounts Receivable
- Bank Feed
- Deferred Revenue
- Stripe PaymentIntent
- Stripe Checkout Session
- Stripe SetupIntent
- Stripe PaymentMethod
- Stripe Charge
- Stripe Refund
- QuickBooks Invoice
- QuickBooks Class Tracking
- QuickBooks Location Tracking
- QuickBooks Project
- QuickBooks Closing Date
- Stripe Invoice Line Item
- Stripe Proration
- Stripe Invoice Status
- Stripe Shipping Rate
- Stripe Transfer
- Stripe Mandate
- Stripe on_behalf_of
- Stripe Invoice Item
- QuickBooks Estimate
- Stripe Invoice Payment
- Stripe Invoice Payment Settings
- Stripe Billing Meter
- Stripe Invoice Template
- Stripe Price
- Stripe Subscription Schedule
- Stripe Subscription Item
- QuickBooks Recurring Transaction
- QuickBooks Sub-Customer
- QuickBooks Audit Log
- QuickBooks Bank Rule
- Stripe Subscription Status
- Stripe Mixed Interval Subscription
- Stripe Trial Settings
- QuickBooks Payment Terms
- Stripe Pending Update
- QuickBooks Tags
- QuickBooks Credit Card Credit
- QuickBooks Vendor Credit
- QuickBooks Bill
- QuickBooks Delayed Charge
- Stripe Billing Mode
- QuickBooks Billable Expense
- Stripe Customer Cash Balance
- QuickBooks Purchase Order
- QuickBooks Opening Balance
- QuickBooks Account Type
- QuickBooks Sales Tax Center
- Stripe Webhook
- Stripe Metadata
- Stripe Outbound Payment
- Stripe Received Credit
- Stripe Outbound Transfer
- Stripe Inbound Transfer
- Stripe Received Debit
- Stripe Payout Method
- Stripe Financial Account Transaction
- Stripe Financial Address
- Stripe Application Fee
- Stripe Connected Account
- Stripe Destination Charge
- Stripe Separate Charges and Transfers
- Stripe Direct Charge
- Stripe Payment Method Configuration
- Stripe Dynamic Payment Methods
- Stripe Payment Method Rules
- QuickBooks Bundle
- Stripe Account Capability
- Stripe Merchant of Record
- Stripe Data Pipeline
- Settlement Currency
Ready to try Acodei?
Connect Stripe to QuickBooks Online in minutes and let the fees, refunds, and payouts land where your accountant expects them.