Public pages and client portal
Clients can review estimates, pay invoices, and check their balance through links you share with them. They don’t need a PayPolka account. Share these links with the intended recipient, because anyone who has a link can open its page.
Public invoice
Sending an invoice emails the primary contact a link to /i/<token>. The page shows the invoice as a document, the Balance at the top, a Payment history table once anything has been paid, and a How to pay card with the methods you allow. An invoice that bills part of an estimate or a fixed fee also shows where it sits: Total before tax, Previously invoiced, and This invoice.
If you’ve published terms, a footer line links to them and says that paying confirms acceptance. How payment works from here is in Getting paid.
Public estimate
Sending an estimate emails a link to /e/<token>. A sent estimate that hasn’t expired shows two buttons. Accept estimate opens a form where the client types their full name to sign and can add notes. Acceptance records the name, time, and IP address. Decline asks for an optional reason.
An estimate past its Valid until date shows an expired message and takes no action. Attachments you added appear at the bottom, each a download link.
Client portal
Each client can have one portal link at /p/<token>. On the client’s page press Generate portal link. After that the buttons read View portal and Rotate portal link. Rotating issues a new URL and kills the old one at once.
The portal shows three tiles, Invoices, Total collected, and Outstanding balance, then up to three sections:
- Work to date, one row per project with approved hours and expenses. A project only appears here if you ticked Show approved hours and expenses in the client portal on its form. It’s off by default, only active projects appear, and only approved or invoiced work counts.
- Estimates, every sent, accepted, or declined estimate except archived ones and sent ones past their Valid until date, with its status and total, linking to the public estimate.
- Invoices, everything except drafts, with issue date, due date, status, amount, and balance, each linking to its public invoice.
Autopay on the portal
When your account takes cards or bank payments online, the portal also has an Autopay card. The client reads the agreement, ticks the box, and presses Set up autopay to save a card or bank account through Stripe. The agreement says they authorize you to charge it for each recurring invoice you send, that amounts can change, when cards and bank accounts are charged, the processing fee if you pass fees on, and how to stop. The client gets an email with a copy.
Once it’s on, the card says which method is saved, shows the agreement with the date they agreed, and has a Remove button. Removing it detaches the method at Stripe. You see Autopay: Visa ending 4242 (or similar) on the client’s page, with Turn off. How and when invoices are charged is in Recurring invoices.
How links expire
Invoice, estimate, and portal links are bearer links. Anyone holding the URL can open the page. You can manage link expiry under Settings, Documents, and replace individual links when needed.
Links stop working after (days) sets the lifetime. The default is 365 and the minimum is 7. Sending or resending a document restarts its clock, and so does each reminder email. Emailing a statement restarts the portal link’s clock, or creates a portal link if the client has none. Opening the portal renews the links of the invoices listed on it. Leave the field blank and links never expire. An expired link opens a page that says so and tells the client to ask you for a fresh one.
Any invoice or estimate also has Regenerate public link in its actions menu, which kills the old link at once.
The payment page
Your account has a standing page at /pay/your-slug, headed Make a payment. The URL is under Settings, Payments with a Copy button.
The client fills in Your name, Email, Invoice number, and Amount (USD), picks a method under Pay with, and presses Continue to payment to reach Stripe Checkout. Amounts run from $1 to $100,000. The INV- prefix is optional. If you pass fees on, a breakdown under the payment methods shows the fee for the chosen method and the total.
If you allow cash or check and have written instructions, they show at the bottom. If Stripe isn’t connected, the page drops the form and shows your cash or check instructions. If you have no instructions either, the page doesn’t exist and the link shows not found.
The Freeform tab
A payment-page payment lands on an invoice automatically only when both the invoice number resolves to an open invoice and the payer’s email matches a contact on that client. The client isn’t told which happened, because invoice numbers are sequential and guessable.
Everything else goes to the Freeform tab on the Invoices page. Each row shows the payer, reference, method, amount, and a status of Received, Pending (ACH still clearing), Failed, Refunded, or Applied. Once a payment shows Received, pick the right invoice from the dropdown and press Apply. Pending and failed payments can’t be applied. The payment then shows on that invoice and in Accounting like any other.
If you refund one of these payments in your Stripe dashboard before applying it, the row shows Refunded and the amount that went back. Applying a partly refunded payment credits only what’s left, and the button says how much, for example Apply $300.00. A payment that was refunded in full shows the Refunded status and can’t be applied. Refunds count in your reports on the day they happened.
Your terms page
Under Settings, Documents, the Terms / engagement letter card has a Title and a Markdown Body. Fill both and the page publishes at /terms/your-slug, with the URL shown on the card. Public invoices and estimates then carry a footer line linking to it, using your title as the link text. Leave either field empty and the page and the footer line disappear.