Invoice Portal
Understand the public invoice page, customer comment flow, PDF download, and online payment behavior.
The public invoice portal is the page customers open from an invoice link. It combines invoice preview, PDF download, comment-thread access, and online payment when Stripe-backed payment is available.

Who uses it
- customers reviewing or paying an invoice
- billing teams validating the public experience before sharing it
- teammates supporting payment or comment issues from outside the dashboard
Typical Workflow
- Open the shared invoice link.
- Review the invoice preview and due amount.
- Download the PDF if a copy is needed.
- Use the comment thread if the invoice allows thread-based write access.
- Continue to secure payment when Stripe and invoice state allow online payment.
This page lets the customer review the invoice, leave an authorized comment, and pay the outstanding balance when online payment is enabled.
What the portal includes
- invoice summary with issue date, due date, and amount due
- live and PDF preview modes
- PDF download
- comment thread with realtime updates
- online payment card with amount validation and Stripe confirmation
Comment and write-access behavior
The portal comment area supports:
- customer or OTP-gated write access depending on invoice configuration
- optional TOTP verification for write operations
- remembered draft name and email on the same device
- realtime comment updates over streaming with polling fallback
This keeps customer replies attached directly to the invoice instead of relying on a separate email thread alone.
Online payment behavior
Payment is only offered when all of the following are true:
- Stripe is connected
- the invoice is payable online in its current status
- there is still an outstanding amount due
The payment card validates:
- minimum amount
- currency decimal precision
- no payment above the outstanding balance
Permission and state edge cases
- invalid or expired short links render the
Invoice Not Foundstate - even when a portal loads, comments can still require OTP or customer-session verification before posting
- a Stripe-connected workspace can still show payment unavailable if the invoice status is not payable or there is no remaining balance
Troubleshooting
The link opens, but the customer cannot comment
Check the invoice write-auth mode. Portal comments may require OTP, customer-session verification, or TOTP before posting.
The portal shows payment unavailable
Review three things: Stripe connection, invoice status, and outstanding balance. All three gates must pass.
A payment completed, but the portal still looks stale
Refresh the invoice state. The payment form reconciles intent status, but the portal still depends on the latest invoice data fetch.