---
title: "Get the public share link for an invoice or offer"
method: POST
path: "/invoices/{id}/share-link"
tags: ["Invoices"]
---

# Get the public share link for an invoice or offer

`POST /invoices/{id}/share-link`

## Request

- Base URL: `https://api.lumabill.ch/v1`
- URL: `https://api.lumabill.ch/v1/invoices/{id}/share-link`
- Auth: HTTP bearer

Returns the recipient-facing view URL for an invoice or an offer - the same link the send mail contains. Use it to hand someone a payment or viewing link without sending mail from Lumabill.

POST because the first call mints and persists the public token. It is idempotent: a document that already carries a token keeps it, so the URL stays stable once shared. Works for offers too, since offers are stored alongside invoices. A draft is rejected (400): the link would expose an unfinished document with no login and no expiry. Profile-scoped like GET /invoices/{id}.

## Response `200`

Share link

- object
  - `url` string, uri: Public view page for the document
  - `paymentLink` string, uri, nullable: Stripe checkout URL when online payment is configured on the document, otherwise null.
  - `onlinePayment` boolean: Whether online payment is enabled on the document

## Other responses

- `400`: Validation error
- `401`: Invalid or missing API key
- `403`: Subscription required or read-only key on a write endpoint
- `404`: Resource not found
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/lumabill/apis/lumabill-api.md) · [All operations](https://skmtc.dev/lumabill/apis/lumabill-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lumabill/apis/lumabill-api/revisions/e48e7099b545?raw)
