Create a new KLARA invoice for the authenticated company.
Creates a new invoice for an existing customer under the company resolved from the bearer JWT. The request body's <code>id</code> must be <code>0</code> or omitted — this endpoint does not support updating existing invoices.<br/><br/><strong>Typical flow:</strong><ol><li>Call <code>GET /core/v1/invoices/next-invoice-number</code> to obtain the next invoice number.</li><li>(Optional) List existing invoices with <code>GET /core/v1/invoices</code> — filter by <code>status</code> and page with <code>offset</code>/<code>limit</code> — to check what is already booked before creating another.</li><li>Look up the customer via <code>GET /core/v1/customers</code> (with search filters and pagination).</li><li>Look up company bank accounts via <code>GET /core/v1/company-bank-accounts</code>.</li><li>Search articles via <code>GET /core/latest/articles/search</code> or <code>GET /core/latest/articles/article-numbers</code> to populate order items.</li><li>(Optional) Look up open positions via <code>GET /core/v1/bank-reconciliation/open-positions</code> to reconcile prepayments / credit notes.</li><li>(Optional) Call <code>POST /core/v1/orders/next-order-number</code> to obtain the next <code>order.orderNumber</code>.</li><li>(Optional) Call <code>GET /core/latest/company-configuration/including-vat</code> to determine the company default for <code>usingVAT</code>.</li><li>Build the invoice payload with order items.</li><li>Call this endpoint with <code>status=INVOICED</code> to save and book, or <code>status=DRAFT</code> to save without booking.</li></ol>On status <code>INVOICED</code> or <code>SENT</code> the invoice is also booked into KLARA accounting, inventory transactions are created and the HubSpot indicator is synchronised. <strong>This endpoint does not send/deliver the invoice</strong> (no email/ePost/eBill/print&send), regardless of <code>postMethod</code> or a <code>SENT</code> status; retrieve the PDF via <code>POST /core/v1/invoices/{id}/printed-document</code> and deliver it yourself. The caller must hold the <code>FINANCE</code> permission on the target company.<br/><br/><strong>Status is caller-controlled.</strong> The Klara GUI keeps an invoice in <code>DRAFT</code> until the user posts it in the final step; via the API you choose — send <code>status=DRAFT</code> to save without booking, or <code>status=INVOICED</code> (or <code>SENT</code>) to book immediately. A DRAFT can be finalized later with <code>PUT /core/v1/invoices</code> (<code>status=INVOICED</code>).<br/><br/><strong>Important — booking is created without a printed invoice.</strong> When you book via this endpoint (<code>status=INVOICED</code>/<code>SENT</code>), the accounting booking is created but <strong>no PDF is rendered or stored</strong> — the invoice and its booking have no printed document (unlike the GUI, which renders, stores and books in one step). To attach the printed invoice, run two follow-up calls: (1) <code>POST /core/v1/invoices/{id}/printed-document</code> to render the PDF and store its <code>printedFileId</code> on the invoice, then (2) <code>PUT /core/v1/bookings/{id}/documents</code> to link that <code>printedFileId</code> (in <code>documentIds</code>) to the booking returned in <code>bookingNumbers</code>.
Request
- Base URL: https://api.klara.ch
- URL: https://api.klara.ch/core/v1/invoices
- Auth: one of:
- API key in header X-API-KEY
- HTTP bearer
Query parameters
When <code>true</code>, allows save/booking even if the document date falls inside a closing or closed fiscal year. Defaults to false.
Headers
Preferred response language as a BCP-47 tag (e.g. <code>en</code>, <code>de</code>, <code>fr</code>, <code>it</code>). Forwarded to luzfin_finance.
Request body
Example request
{
"orderType": "INVOICE",
"status": "INVOICED",
"invoiceCode": "INV-2026-001",
"invoiceNumber": 2026001,
"documentDate": "2026-05-28",
"paymentDate": "2026-06-27",
"deliveryDate": "2026-05-25",
"issuedDate": "2026-05-28",
"servicePeriodFrom": "2026-05-01",
"servicePeriodTo": "2026-05-31",
"servicePeriodPattern": "MONTHLY",
"amount": 1080,
"usingVAT": true,
"hasCompanyVat": true,
"subject": "Invoice 2026-001",
"closeAndSignature": "Thank you for your business.",
"ourReference": "ACC-2026",
"yourReference": "PO-9981",
"companyCityAndDate": "Zurich, 28.05.2026",
"postMethod": "SEND_EMAIL",
"delivery": "DHL",
"ibanNumberCHF": "CH9300762011623852957",
"ibanNumberCHW": "CH9300762011623852957",
"referenceNumber": "21 00000 00003 13947 14300 09017",
"qrInvoice": true,
"invoiceType": "MANUAL",
"originDistributionMethod": "SEND_EMAIL",
"order": {
"orderNumber": 2026001,
"orderName": "Consulting Q2 2026",
"companyId": 12345,
"customer": {
"id": 50123,
"customerType": "COMPANY",
"companyId": 12345,
"company": {
"id": 50123,
"name": "Muster AG",
"addresses": [
{
"type": "COMPANY",
"addressType": "MAIN",
"salutation": "MALE",
"firstName": "Hans",
"lastName": "Muster",
"companyName": "Muster AG",
"street": "Bahnhofstrasse",
"homeNumber": "12a",
"additionalAddress": "c/o Finance Department",
"addressLines": "Bahnhofstrasse 12a",
"city": {
"id": 4247,
"addressPostcode": "8005",
"cityName18": "Zuerich",
"cityName27": "Zuerich",
"onrp": 4247,
"postcodeType": 20,
"additionalPostcode": "00",
"basicPostcode": 8005,
"languageCode": 1,
"state": {
"id": 26,
"code": "ZH",
"description": "Zuerich"
},
"country": {
"id": 1,
"countryName": "Switzerland",
"iso2Code": "CH",
"iso3Code": "CHE",
"phoneCode": "41",
"numericCode": "756"
}
},
"validFrom": "2026-01-01",
"validTo": "2026-12-31"
}
],
"emails": [
{
"id": "1001",
"emailAddress": "billing@muster.ch",
"type": "WORK"
}
],
"phones": [
{
"id": 2001,
"phoneNumber": "+41 44 123 45 67",
"type": "WORK"
}
],
"companyBillingAddress": {
"type": "COMPANY",
"addressType": "MAIN",
"salutation": "MALE",
"firstName": "Hans",
"lastName": "Muster",
"companyName": "Muster AG",
"street": "Bahnhofstrasse",
"homeNumber": "12a",
"additionalAddress": "c/o Finance Department",
"addressLines": "Bahnhofstrasse 12a",
"city": {
"id": 4247,
"addressPostcode": "8005",
"cityName18": "Zuerich",
"cityName27": "Zuerich",
"onrp": 4247,
"postcodeType": 20,
"additionalPostcode": "00",
"basicPostcode": 8005,
"languageCode": 1,
"state": {
"id": 26,
"code": "ZH",
"description": "Zuerich"
},
"country": {
"id": 1,
"countryName": "Switzerland",
"iso2Code": "CH",
"iso3Code": "CHE",
"phoneCode": "41",
"numericCode": "756"
}
},
"validFrom": "2026-01-01",
"validTo": "2026-12-31"
},
"corporateIdentificationNumber": "CHE-123.456.789",
"vatNumber": "CHE-123.456.789 MWST",
"hrNumber": "CH-020.3.926.481-3",
"nogaCode": "620100",
"companyNumber": "C-0001",
"companyOriginReference": "ERP-4711",
"website": "https://www.muster.ch",
"language": "de"
},
"person": {
"id": 50124,
"salutation": "MALE",
"firstName": "Hans",
"lastName": "Muster",
"birthday": "1980-04-17",
"addressList": [
{
"type": "COMPANY",
"addressType": "MAIN",
"salutation": "MALE",
"firstName": "Hans",
"lastName": "Muster",
"companyName": "Muster AG",
"street": "Bahnhofstrasse",
"homeNumber": "12a",
"additionalAddress": "c/o Finance Department",
"addressLines": "Bahnhofstrasse 12a",
"city": {
"id": 4247,
"addressPostcode": "8005",
"cityName18": "Zuerich",
"cityName27": "Zuerich",
"onrp": 4247,
"postcodeType": 20,
"additionalPostcode": "00",
"basicPostcode": 8005,
"languageCode": 1,
"state": {
"id": 26,
"code": "ZH",
"description": "Zuerich"
},
"country": {
"id": 1,
"countryName": "Switzerland",
"iso2Code": "CH",
"iso3Code": "CHE",
"phoneCode": "41",
"numericCode": "756"
}
},
"validFrom": "2026-01-01",
"validTo": "2026-12-31"
}
],
"emailList": [
{
"id": "1001",
"emailAddress": "billing@muster.ch",
"type": "WORK"
}
],
"phoneList": [
{
"id": 2001,
"phoneNumber": "+41 44 123 45 67",
"type": "WORK"
}
],
"personNumber": "P-0001",
"personOriginReference": "ERP-8150",
"website": "https://www.muster.ch",
"language": "de"
},
"termsOfPayment": 30,
"priceCategory": "STANDARD",
"uuid": "0d9f4d1e-4a2b-4c8d-9f3e-1b2c3d4e5f60"
},
"invoiceGroup": "DEFAULT"
},
"orderItems": [
{
"position": 1,
"itemNumer": "P0000061123",
"description": "Consulting services",
"articleExtendedDescription": "Sprint 12, May 2026",
"quantity": 10,
"unit": "Hour",
"price": 100,
"amount": 1000,
"posAmount": 1000,
"vat": {
"id": 1,
"vatCode": "1",
"rate": 8.1,
"description": "Normal rate 8.1%",
"validFrom": "2024-01-01",
"validTo": "2099-12-31"
},
"vatCode": "1",
"vatCase": "TAXABLE_SUPPLY",
"articleType": "SERVICE",
"tag": "3400",
"servicePeriodFrom": "2026-05-01",
"servicePeriodTo": "2026-05-31",
"servicePeriodPattern": "MONTHLY",
"specialRates": "SSS1",
"articleSet": "SET-001",
"inventorySelections": [
{
"storagePlaceId": 77,
"quantity": 1,
"serialNumbers": [
"SN-0001",
"SN-0002"
]
}
]
}
],
"attachments": [
{
"fileId": "5f8d0d55-b1a4-4d6e-9a1f-2c3b4d5e6f70"
}
],
"openPositionsLinkedToInvoice": [
{
"bookingTypeCode": "AR_PREPAYMENT",
"bookingDetailUri": "/luz_accounting/api/klara_tenant/companies/12345/bookings/778/booking-details/9912",
"partialPaymentAmount": 250
}
],
"documentAddress": {
"customerId": 50123,
"customerType": "COMPANY",
"address": {
"type": "COMPANY",
"addressType": "MAIN",
"salutation": "MALE",
"firstName": "Hans",
"lastName": "Muster",
"companyName": "Muster AG",
"street": "Bahnhofstrasse",
"homeNumber": "12a",
"additionalAddress": "c/o Finance Department",
"addressLines": "Bahnhofstrasse 12a",
"city": {
"id": 4247,
"addressPostcode": "8005",
"cityName18": "Zuerich",
"cityName27": "Zuerich",
"onrp": 4247,
"postcodeType": 20,
"additionalPostcode": "00",
"basicPostcode": 8005,
"languageCode": 1,
"state": {
"id": 26,
"code": "ZH",
"description": "Zuerich"
},
"country": {
"id": 1,
"countryName": "Switzerland",
"iso2Code": "CH",
"iso3Code": "CHE",
"phoneCode": "41",
"numericCode": "756"
}
},
"validFrom": "2026-01-01",
"validTo": "2026-12-31"
},
"salutation": "MALE",
"personFirstName": "Hans",
"personLastName": "Muster",
"companyName": "Muster AG"
},
"mailingAddress": {
"customerId": 50123,
"customerType": "COMPANY",
"address": {
"type": "COMPANY",
"addressType": "MAIN",
"salutation": "MALE",
"firstName": "Hans",
"lastName": "Muster",
"companyName": "Muster AG",
"street": "Bahnhofstrasse",
"homeNumber": "12a",
"additionalAddress": "c/o Finance Department",
"addressLines": "Bahnhofstrasse 12a",
"city": {
"id": 4247,
"addressPostcode": "8005",
"cityName18": "Zuerich",
"cityName27": "Zuerich",
"onrp": 4247,
"postcodeType": 20,
"additionalPostcode": "00",
"basicPostcode": 8005,
"languageCode": 1,
"state": {
"id": 26,
"code": "ZH",
"description": "Zuerich"
},
"country": {
"id": 1,
"countryName": "Switzerland",
"iso2Code": "CH",
"iso3Code": "CHE",
"phoneCode": "41",
"numericCode": "756"
}
},
"validFrom": "2026-01-01",
"validTo": "2026-12-31"
},
"salutation": "MALE",
"personFirstName": "Hans",
"personLastName": "Muster",
"companyName": "Muster AG"
},
"emailDistribution": {
"subject": "Invoice INV-2026-001",
"emailAddress": "billing@muster.ch",
"ccEmailAddresses": [
"accounting@muster.ch"
],
"replyTo": "finance@my-company.ch",
"emailText": "Please find our invoice attached."
},
"printedFileId": "5f8d0d55-b1a4-4d6e-9a1f-2c3b4d5e6f70"
}Response
Invoice persisted successfully.
Example response
{
"orderType": "INVOICE",
"status": "INVOICED",
"invoiceCode": "INV-2026-001",
"invoiceNumber": 2026001,
"documentDate": "2026-05-28",
"paymentDate": "2026-06-27",
"deliveryDate": "2026-05-25",
"issuedDate": "2026-05-28",
"servicePeriodFrom": "2026-05-01",
"servicePeriodTo": "2026-05-31",
"servicePeriodPattern": "MONTHLY",
"amount": 1080,
"usingVAT": true,
"hasCompanyVat": true,
"subject": "Invoice 2026-001",
"closeAndSignature": "Thank you for your business.",
"ourReference": "ACC-2026",
"yourReference": "PO-9981",
"companyCityAndDate": "Zurich, 28.05.2026",
"postMethod": "SEND_EMAIL",
"delivery": "DHL",
"ibanNumberCHF": "CH9300762011623852957",
"ibanNumberCHW": "CH9300762011623852957",
"referenceNumber": "21 00000 00003 13947 14300 09017",
"qrInvoice": true,
"invoiceType": "MANUAL",
"originDistributionMethod": "SEND_EMAIL"
}Changes
No recorded changes to this operation across all 1 revision of this API.