Share an invoice link instead of emailing it
get_invoice_link returns the public_url and pdf_url for an invoice you can access. The public page is keyed on an unguessable id, is marked noindex, and opening it moves a sent invoice to viewed.
Written and reviewed by the Billr team. Published , last reviewed .
- Who this is for
- People who send documents through their own email, a chat thread or a portal and only need the link.
- Billr capabilities used
get_invoice_linkget_invoiceget_payment_status
What you need first
- An invoice you can access, in any status other than a deleted one.
- A key with the read scope at minimum, which every profile includes.
- A channel to deliver the link that you already trust, such as your own email account.
Step by step
01Fetch the links
get_invoice_linktakes theinvoice_idand returns two URLs: the client-facing page and the PDF download.get_invoice_link { "invoice_id": "6b1f0c62-6a0f-4f38-9d0e-3a1f9a2b7c11" }02Treat the link as a secret
The URL contains an unguessable public id rather than a sequential number. Anyone with the link can read the document, so share it with the client, not in a public channel.
03Expect a status change on first open
Opening the public page moves a sent invoice to viewed. That is a read receipt, not a payment, and it is recorded on the invoice itself.
04Check payment readiness
get_payment_statusreportsonline_payments_enabledand apay_urlwhen the business has a connected Stripe account. Without that, the page is a document and the client pays by your own arrangement.
Worked example
Fictional account, field names as returned by the server
You say
Give me the shareable link for INV-1150.
Your agent calls
get_invoice_link { "invoice_id": "6b1f0c62-6a0f-4f38-9d0e-3a1f9a2b7c11" }
Expected response, abridged
{
"summary": "Invoice INV-1150 link.",
"public_url": "https://billr.cc/i/2cQ7f1RtKp",
"pdf_url": "https://billr.cc/api/public/invoices/2cQ7f1RtKp/pdf"
}Limits and gotchas
- The public page is deliberately excluded from search engines and carries a noindex directive; that does not make the link private, just unlisted.
- Viewing flips sent to viewed only. It never marks an invoice paid.
- The link reveals the snapshot the invoice was created with, not live client data, so later client edits do not rewrite a sent document.
- A cancelled invoice link still resolves, but payments against it are refused.
Troubleshooting
- The link opens an error page
- Check that you copied the whole URL, including the id segment.
get_invoice_linkreturns the exact string to share. - The client says the link shows the wrong amount
- Sent invoices are immutable, and the link shows the stored document. Issue a corrected invoice instead of trying to rewrite history.
- No pay button appears
- Online payments are a per-business setting.
get_payment_statusshowsonline_payments_enabled, and the dashboard is where Stripe is connected.
Sources
Reviewed 2026-09-20 against Billr's own tool implementations and the client documentation linked above.
Read next
If online collection is enabled for the business, the same link is where a client pays by card, which is why viewing matters.
Track what gets paid