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

  1. 01Fetch the links

    get_invoice_link takes the invoice_id and returns two URLs: the client-facing page and the PDF download.

    Example
    get_invoice_link  {
      "invoice_id": "6b1f0c62-6a0f-4f38-9d0e-3a1f9a2b7c11"
    }
  2. 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.

  3. 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.

  4. 04Check payment readiness

    get_payment_status reports online_payments_enabled and a pay_url when 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

Example
{
  "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_link returns 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_status shows online_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.

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