/api/v1/kundfakturorSkapa ett fakturautkast, och bokför det om du vill
Tar en färdig faktura mot en KÄND kund — det är skillnaden mot orderintaget, som tar en butiksorder som ska tolkas. Utkastet skrivs genom samma väg som fakturaformuläret, med samma kontroll mellan radens momssats och intäktskontots momskod. Med "book": true bokförs fakturan direkt: nummer, OCR och verifikat sätts i en transaktion.
Bokföringen går genom motorns egna funktioner, vilket betyder att momslås, oföränderliga verifikat och avslutade räkenskapsår gäller lika för API:et som för dig själv i gränssnittet. Ett anrop som stoppas av ett lås får 422 med skälet utskrivet — det är en egenskap hos ett bokföringsprogram, inte en brist i API:et.
**Nyckeln behöver båda behörigheterna: Bokföra och Läsa.** Utkastet slås upp mot kunden för att veta momstyp, och mot intäktskontots momskod för att kunna jämföra den med radens momssats — båda uppslagen är läsningar. En nyckel med enbart Bokföra får 403 med det beskedet i klartext.
Debet & Kredit kör på din egen server, så bas-URL:en är din — inte vår. Skriv in den här, så byts den ut i varje kodexempel i dokumentationen.
POST https://din-installation.se/api/v1/kundfakturorBehörighet
Bokföra ledger:write
Skapar och bokför fakturor genom samma spärrar som programmet självt: momslås, låsta perioder och avslutade räkenskapsår gäller lika.
Takt
600 anrop per timme och nyckel (ställbart per nyckel).
Parametrar
Huvuden
| Namn | Typ | Krävs | Beskrivning |
|---|---|---|---|
Idempotency-Key | string | ja | 8–255 tecken som du väljer själv, unikt per faktura. Samma nyckel igen ger det sparade svaret i stället för en andra faktura. order-2026-0042 |
Kropp (JSON)
| Namn | Typ | Krävs | Beskrivning |
|---|---|---|---|
customerId | uuid | ja | Kundens id. Kunden måste finnas — den här rutten skapar aldrig kunder. 3c9a1b2d-4e5f-4a6b-8c7d-9e0f1a2b3c4d |
invoiceDate | date | ja | Fakturadatum (ÅÅÅÅ-MM-DD). 2026-03-12 |
paymentTerms | integer | ja | Betalningsvillkor i dagar, 0–90. Förfallodagen räknas i kalendern. 30 |
yourReference | string | nej | Kundens referens. |
notes | string | nej | Fritext på fakturan. |
rows | array | ja | Minst en rad med description, quantity, unitPrice, vatRate och account. |
book | boolean | nej | true bokför fakturan direkt. Utelämnad eller false lämnar den som utkast. false |
Svar
Exempel på anrop:
{
"customerId": "3c9a1b2d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"invoiceDate": "2026-03-12",
"paymentTerms": 30,
"rows": [
{
"description": "Konsultation mars",
"quantity": 10,
"unitPrice": 1000,
"vatRate": 25,
"account": 3041
}
],
"book": false
}Exempel på svar:
{
"id": "7d8e9f0a-1b2c-4d3e-8f4a-5b6c7d8e9f0a",
"status": "draft",
"invoice_number": null,
"net_amount": 10000,
"vat_amount": 2500,
"total_amount": 12500
}Statuskoder
| Kod | error | Betydelse |
|---|---|---|
| 200 | — | Fakturan skapades — eller är sedan tidigare skapad med samma Idempotency-Key. |
| 400 | idempotency_required | Huvudet Idempotency-Key saknas. |
| 400 | invalid_request | Kroppen går inte att läsa — svaret säger vilket fält. |
| 413 | payload_too_large | Kroppen är större än 512 kB. En faktura är några kilobyte; taket stoppar en kropp som inte är en. |
| 409 | idempotency_conflict | Samma Idempotency-Key har redan använts med en annan kropp. |
| 409 | idempotency_in_progress | Ett anrop med samma Idempotency-Key behandlas just nu. Skicka om exakt samma anrop om en stund — du får då det första svaret. Byt INTE nyckel: det första anropet kan mycket väl ha bokfört. |
| 422 | unprocessable | Fakturan är mottagen men kunde inte skapas eller bokföras. Skälet står i svaret — låst period, avslutat räkenskapsår eller en momskonflikt mellan rad och konto. |
| 403 | insufficient_scope | Nyckeln är giltig men saknar behörigheten rutten kräver. |
| 401 | unauthorized | Saknad, felformad eller okänd nyckel. |
| 401 | key_revoked | Nyckeln är återkallad av installationens ägare. |
| 429 | rate_limited | Nyckelns kvot för timmen är förbrukad. Retry-After säger när den återställs. |
| 503 | server_misconfigured | Installationen saknar konfiguration för API:et. |
Felkroppens fält och råd om omförsök står på Fel och statuskoder.
Kodexempel
curl -X POST "https://din-installation.se/api/v1/kundfakturor" \
-H "Authorization: Bearer dk_live_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-2026-0042" \
-d '{
"customerId": "3c9a1b2d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"invoiceDate": "2026-03-12",
"paymentTerms": 30,
"rows": [
{
"description": "Konsultation mars",
"quantity": 10,
"unitPrice": 1000,
"vatRate": 25,
"account": 3041
}
],
"book": false
}'