# Reference

> Every Public API operation, request and response, in one place.

- [List currencies](/reference/currencies/listCurrencies/): Returns every accepted currency code. Not paginated.
- [Create an expense](/reference/expenses/createExpense/): Creates an expense from a multipart/form-data body. file is required and must have one of the extensions jpeg, jpg, bmp, gif, pdf, png, tiff, xlsx, xls, doc, docx or odf. vat, invoice_number and the file are stored but not returned; fetch the file with the download endpoint. Fires the expense.created webhook.
- [Delete an expense](/reference/expenses/deleteExpense/): Deletes the expense and its file. Fires the expense.deleted webhook.
- [Download the expense file](/reference/expenses/downloadExpenseFile/): Streams the stored file under its original name. Content-Length is not sent.
- [Get an expense](/reference/expenses/getExpense/): 
- [List expenses](/reference/expenses/listExpenses/): Returns the business's expenses, newest first, 50 per page. Use ?page= to paginate; the page size cannot be changed.
- [Replace the expense file](/reference/expenses/replaceExpenseFile/): Replaces only the stored file; every other field is kept. Fires the expense.updated webhook.
- [Replace an expense](/reference/expenses/updateExpense/): Replaces every field of the expense with the multipart/form-data body. file is optional here; when present it replaces the stored file. Fires the expense.updated webhook.
- [expense.created](/reference/expenses/webhookExpenseCreated/): Sent when an expense is created through the API or the app. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.
- [expense.deleted](/reference/expenses/webhookExpenseDeleted/): Sent when an expense is deleted through the API or the app. The payload contains only the id of the deleted expense. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.
- [expense.updated](/reference/expenses/webhookExpenseUpdated/): Sent when an expense is replaced or its file is swapped. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.
- [Create an invoice](/reference/invoices/createInvoice/): Creates a finalized invoice and queues its PDF. Fires the invoice.created webhook.
- [Delete an invoice](/reference/invoices/deleteInvoice/): Deletes the invoice together with its PDF, items, payment options and e-mail logs, and recalculates the series counter. Fires the invoice.deleted webhook.
- [Download the invoice PDF](/reference/invoices/downloadInvoicePdf/): Streams the invoice PDF. The PDF is rendered asynchronously after create and update; if it does not exist yet the request waits for it for up to 20 seconds and then fails with 500. Content-Length is not sent.
- [Get an invoice](/reference/invoices/getInvoice/): 
- [List invoices](/reference/invoices/listInvoices/): Returns the business's finalized invoices, newest first, 50 per page. Use ?page= to paginate; the page size cannot be changed. Drafts made in the app are never included.
- [Replace an invoice](/reference/invoices/updateInvoice/): Replaces every field of the invoice with the request body, under the same rules as create. Always resend the current invoice_number: when it is omitted the invoice is renumbered from the series counter. Items, payment options and custom fields are rewritten, totals recalculated and the PDF regenerated. Fires the invoice.updated webhook.
- [invoice.created](/reference/invoices/webhookInvoiceCreated/): Sent when a finalized invoice is created, whether through the API, the app or a recurring invoice. The PDF is rendered asynchronously, so it may not exist yet when this event arrives; GET /invoices/{invoice}/download waits for it. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.
- [invoice.deleted](/reference/invoices/webhookInvoiceDeleted/): Sent when a finalized invoice is deleted. The payload contains only the id of the deleted invoice. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.
- [invoice.updated](/reference/invoices/webhookInvoiceUpdated/): Sent when an invoice is replaced, when its payment status changes (including a Stripe payment), or after any other save. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.
- [Get the business profile](/reference/profile/getProfile/): Returns the business the token is scoped to. Companies include company_name and company_code; individual activities include first_name, last_name and individual_activity_id.
