Klirr Docs

Fakturor

Kundfakturor – lista, skapa, hämta och uppdatera fakturor samt bokföra, maila, skriva ut, makulera och kreditera via /3/invoices.

Fakturaresursen speglar Fortnox /3/invoices. Fakturan adresseras på sitt publika nummer (DocumentNumber), inte på ett internt id, och numret kan inte ändras. Det finns ingen DELETE – makulering sker via /cancel och kreditering via /credit.

Klirr bokför vid utfärdandet: när en faktura bokförs allokeras fakturanummer och OCR, verifikatet postas och status blir skickad – i ett och samma steg. Fortnox skiljer på att skapa, bokföra och skicka; i Klirr är /bookkeep och /externalprint därför samma sak.

Scope: invoice · Kräver AI Pro

Endpoints

Metod och sökvägBeskrivning
GET/api/v1/3/invoicesLista fakturor (reducerad listform, utan rader)
POST/api/v1/3/invoicesSkapa ett utkast. Svarar 201.
GET/api/v1/3/invoices/{DocumentNumber}Hämta en faktura (fullständig form)
PUT/api/v1/3/invoices/{DocumentNumber}Uppdatera ett utkast (partiellt)
PUT/api/v1/3/invoices/{DocumentNumber}/bookkeepUtfärda och bokför
PUT/api/v1/3/invoices/{DocumentNumber}/externalprintMarkera som skickad (utfärdar och bokför)
GET/api/v1/3/invoices/{DocumentNumber}/emailMaila fakturan till kunden (utfärdar först om det behövs)
GET/api/v1/3/invoices/{DocumentNumber}/printPDF – utfärdar först om det behövs
GET/api/v1/3/invoices/{DocumentNumber}/previewPDF-förhandsgranskning utan sidoeffekter
PUT/api/v1/3/invoices/{DocumentNumber}/cancelMakulera ett utkast
PUT/api/v1/3/invoices/{DocumentNumber}/creditKreditera en bokförd faktura i sin helhet

Bas-URL: https://app.klirr.ai/api/v1. Skrivningar kuverteras i Invoice. Åtgärdsendpointen tar ingen kropp.

Ett DocumentNumber som inte är ett positivt heltal ger 404.

Listparametrar

Utöver paginering (page, limit, offset) och sortorder (asc/desc):

ParameterVärdenBeskrivning
filtercancelled, fullypaid, unpaid, unpaidoverdue, unbookedSe tabellen nedan. Okänt värde = inget filter.
sortbycustomername, customernumber, documentnumber, invoicedate, ocr, totalStandard är documentnumber.
customernumbertextExakt kundnummer. Okänd kund ger en tom lista, inte 404.
fromdateÅÅÅÅ-MM-DDFakturadatum från och med. Ogiltigt datum ger 400.
todateÅÅÅÅ-MM-DDFakturadatum till och med. Ogiltigt datum ger 400.
ocrtextExakt OCR-nummer.

Fortnox-parametrarna yourordernumber och lastmodified stöds inte ännu och ger 400 i stället för ett ofiltrerat svar.

Filtervärden

filterFakturor som ingår
cancelledMakulerade (fullt krediterade)
fullypaidFullt betalda
unpaidBokförda och obetalda, inklusive förfallna. En delbetald faktura räknas hit.
unpaidoverdueSom unpaid, men bara med förfallodatum före idag
unbookedUtkast

Fält

Fullständig form (GET /3/invoices/{DocumentNumber}, och svaret på POST, PUT och åtgärderna som returnerar JSON).

FältTypSkrivskyddatBeskrivning
@urlstringjaResursens URL.
DocumentNumberstringjaFakturans publika nummer.
CustomerNumberstringnejObligatoriskt vid POST. Kunden måste finnas, annars 404.
CustomerNamestringjaKundens namn.
Address1, ZipCode, CitystringjaKundens adress.
CountrystringnejBärs vidare. Standard Sverige.
OrganisationNumberstringjaKundens organisationsnummer.
InvoiceDatestringnejÅÅÅÅ-MM-DD. Standard är dagens datum (svensk tid).
DueDatestringnejÅÅÅÅ-MM-DD. Standard är InvoiceDate + TermsOfPayment, eller 30 dagar.
TermsOfPaymentstringnejAntal dagar. I svaret härlett som DueDate − InvoiceDate.
NetnumberjaSumma exklusive moms.
TotalVATnumberjaMoms.
Total, GrossnumberjaSumma inklusive moms.
RoundOffnumberjaÖresavrundning.
Balance, TotalToPaynumberjaÅterstående belopp att betala, efter betalningar och krediteringar. 0 för en avskriven kundförlust.
BookedbooleanjaSe livscykel.
SentbooleanjaSe livscykel.
CancelledbooleanjaSe livscykel.
OCRstringjaGenereras vid utfärdandet.
CommentsstringnejAnteckning. "API_BLANK" tömmer.
CurrencystringnejEndast SEK kan skrivas.
CurrencyRatenumbernejVäxelkurs.
CurrencyUnitnumberjaAlltid 1.
TaxReductionTypenone | rot | rut | greennejHusavdrag.
BasisTaxReductionnumberjaUnderlag för husavdrag.
TaxReductionnumberjaBegärt avdrag.
HouseWorkbooleanjatrue när fakturan har husavdrag.
AccountingMethodACCRUAL | CASHjaOrganisationens bokföringsmetod.
InvoiceTypestringnejBärs vidare. Standard INVOICE.
PaymentWaystringnejBärs vidare. Standard AG.
LanguagestringnejBärs vidare. Standard SV.
VATIncludedbooleannejAlltid false. true ger 400.
CreditstringjaAlltid "false" (sträng).
CreditInvoiceReferencestringjaAlltid "0".
VoucherNumber, VoucherSeries, VoucherYearnumber / string / numberjaUtfärdandeverifikatet. 0/"" för utkast.
InvoiceRowsarraynejFakturarader, se nedan.

Skrivskyddade fält som skickas in ignoreras (en klient som läser och skriver tillbaka en faktura orörd får alltså inget fel). Fält som Klirr inte modellerar sparas och returneras oförändrade.

Fakturarader

FältTypSkrivskyddatBeskrivning
RowIdnumbernejRadens id. Skicka { "RowId": 3 } för att behålla en rad oförändrad vid PUT.
ArticleNumberstringnejArtikelnummer, "" för fritextrad.
DescriptionstringnejRadtext.
DeliveredQuantitystringnejAntal. Sträng i svaret.
PricenumbernejÀ-pris exklusive moms.
VATnumbernejMomssats i procent.
VATCodestringnejMomskod. Måste stämma med VAT, annars 400.
AccountNumbernumberjaIntäktskonto, härlett ur momskod och momsbehandling.
UnitstringnejEnhet, returneras som den skickades.
TotalnumberjaRadsumma.
PriceExcludingVAT, TotalExcludingVATnumberjaPris och summa exklusive moms.
HouseWorkbooleannejRaden omfattas av husavdrag.
HouseWorkTypestringnejEMPTYHOUSEWORK när fakturan har husavdrag men raden inte.
ContributionPercent, ContributionValuestringjaAlltid "0".

Discount/DiscountType på rader, samt Freight och AdministrationFee på fakturan, stöds inte och ger 400 – lägg beloppet som en egen rad.

Listform

GET /3/invoices returnerar en reducerad rad utan InvoiceRows: @url, Balance, Booked, Cancelled, CostCenter, Currency, CurrencyRate, CurrencyUnit, CustomerName, CustomerNumber, DocumentNumber, DueDate, ExternalInvoiceReference1, ExternalInvoiceReference2, FinalPayDate, InvoiceDate, InvoiceType, NoxFinans, OCR, Project, Sent, TermsOfPayment, Total, VoucherNumber, VoucherSeries, VoucherYear, WayOfDelivery. Belopp och nummer (Balance, Total, CurrencyRate, VoucherNumber m.fl.) är strängar i listformen.

Livscykel

Klirr-statusBookedSentCancelled
Utkastfalsefalsefalse
Skickad, betald, förfallen, avskriventruetruefalse
Makulerad (fullt krediterad)falsefalsetrue

En bokförd faktura kan inte ändras med PUT (bokföringslagen 5 kap. 5 §) – svaret är 409 med hänvisning till /credit.

Skapa en faktura

POST skapar alltid ett obokfört utkast. Bokför det sedan med /bookkeep, /email eller /print. Anropet räknas mot planens fakturakvot (403 när den är slut).

curl -X POST https://app.klirr.ai/api/v1/3/invoices \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"Invoice":{"CustomerNumber":"1001","TermsOfPayment":"30","InvoiceRows":[{"Description":"Konsulttimmar","DeliveredQuantity":"10","Price":950,"VAT":25}]}}'

Svar (201, förkortat):

{
  "Invoice": {
    "@url": "https://app.klirr.ai/api/v1/3/invoices/42",
    "DocumentNumber": "42",
    "CustomerNumber": "1001",
    "CustomerName": "Bergström Bygg AB",
    "InvoiceDate": "2026-10-18",
    "DueDate": "2026-11-17",
    "TermsOfPayment": "30",
    "Net": 9500,
    "TotalVAT": 2375,
    "Total": 11875,
    "Gross": 11875,
    "RoundOff": 0,
    "Balance": 11875,
    "TotalToPay": 11875,
    "Booked": false,
    "Sent": false,
    "Cancelled": false,
    "OCR": "",
    "Currency": "SEK",
    "CurrencyRate": 1,
    "CurrencyUnit": 1,
    "TaxReductionType": "none",
    "VATIncluded": false,
    "Credit": "false",
    "CreditInvoiceReference": "0",
    "VoucherNumber": 0,
    "VoucherSeries": "",
    "VoucherYear": 0,
    "InvoiceRows": [
      {
        "RowId": 0,
        "ArticleNumber": "",
        "Description": "Konsulttimmar",
        "DeliveredQuantity": "10",
        "Price": 950,
        "VAT": 25,
        "VATCode": "services_25",
        "AccountNumber": 3001,
        "Unit": "h",
        "Total": 11875,
        "PriceExcludingVAT": 950,
        "TotalExcludingVAT": 9500,
        "HouseWork": false,
        "HouseWorkType": "",
        "ContributionPercent": "0",
        "ContributionValue": "0"
      }
    ]
  }
}

Lista fakturor

curl "https://app.klirr.ai/api/v1/3/invoices?filter=unpaid&fromdate=2026-01-01&sortby=invoicedate" \
  -H "Authorization: Bearer <access_token>"
{
  "Invoices": [
    {
      "@url": "https://app.klirr.ai/api/v1/3/invoices/42",
      "Balance": "11875",
      "Booked": true,
      "Cancelled": false,
      "CostCenter": "",
      "Currency": "SEK",
      "CurrencyRate": "1",
      "CurrencyUnit": "1",
      "CustomerName": "Bergström Bygg AB",
      "CustomerNumber": "1001",
      "DocumentNumber": "42",
      "DueDate": "2026-11-17",
      "ExternalInvoiceReference1": "",
      "ExternalInvoiceReference2": "",
      "FinalPayDate": "",
      "InvoiceDate": "2026-10-18",
      "InvoiceType": "INVOICE",
      "NoxFinans": false,
      "OCR": "4200007",
      "Project": "",
      "Sent": true,
      "TermsOfPayment": "30",
      "Total": "11875",
      "VoucherNumber": "17",
      "VoucherSeries": "B",
      "VoucherYear": "1",
      "WayOfDelivery": ""
    }
  ],
  "MetaInformation": { "@TotalResources": 1, "@TotalPages": 1, "@CurrentPage": 1 }
}

Uppdatera ett utkast

PUT ändrar bara de huvudfält du skickar. Raderna följer Fortnox regel: utelämnas InvoiceRows behålls befintliga rader; skickas fältet ersätts alla rader. Ange { "RowId": n } för de rader som ska stå kvar oförändrade. Se Fortnox-kompatibilitet.

curl -X PUT https://app.klirr.ai/api/v1/3/invoices/42 \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"Invoice":{"Comments":"Avser oktober","InvoiceRows":[{"RowId":0},{"Description":"Resekostnad","DeliveredQuantity":"1","Price":400,"VAT":25}]}}'

Åtgärder

Alla åtgärder adresserar fakturan på DocumentNumber och tar ingen kropp. De som svarar med JSON returnerar {"Invoice": {...}} i fullständig form, läst om efter åtgärden.

bookkeep

PUT /3/invoices/{DocumentNumber}/bookkeep utfärdar ett utkast: fakturanummer och OCR allokeras, verifikatet bokförs och status blir skickad. Ingenting mailas. En redan bokförd faktura ger 200 med resursen (idempotent), även vid samtidiga anrop.

curl -X PUT https://app.klirr.ai/api/v1/3/invoices/42/bookkeep \
  -H "Authorization: Bearer <access_token>"

externalprint

PUT /3/invoices/{DocumentNumber}/externalprint – för när du levererar fakturan i ditt eget system. I Klirr gör den exakt samma sak som /bookkeep.

email

GET /3/invoices/{DocumentNumber}/email mailar fakturan till kundens e-postadress. Observera att det är en GET med sidoeffekt, precis som hos Fortnox.

  • Är fakturan ett utkast utfärdas och bokförs den först, och mailas i samma anrop.
  • Är den redan bokförd skickas bara mejlet igen – inget nytt nummer eller verifikat.
  • Saknar kunden e-postadress svarar API:t 400.
  • Misslyckas utskicket av en redan bokförd faktura svarar API:t 502. Fakturan är oförändrad och anropet kan göras om.

print

GET /3/invoices/{DocumentNumber}/print returnerar fakturan som PDF (Content-Type: application/pdf, Content-Disposition: inline; filename="faktura-<nummer>.pdf"). Ett utkast utfärdas och bokförs först – utskrift räknas som leverans. Klirr mailar ingenting. Personnummer maskeras i PDF:en. En faktura utan rader ger 400.

curl https://app.klirr.ai/api/v1/3/invoices/42/print \
  -H "Authorization: Bearer <access_token>" \
  -o faktura-42.pdf

preview

GET /3/invoices/{DocumentNumber}/preview returnerar en PDF utan sidoeffekter – fakturan utfärdas inte och ändras inte. Fungerar på utkast, som då märks UTKAST. Filnamnet är forhandsgranskning-<nummer>.pdf, svaret har Cache-Control: no-store och personnummer maskeras. En faktura utan rader ger 400.

cancel

PUT /3/invoices/{DocumentNumber}/cancel makulerar ett utkast. Utkastet raderas, och svaret är fakturan som den såg ut före raderingen med Cancelled: true. Efteråt ger GET på numret 404.

En bokförd faktura kan inte makuleras – svaret är 409 med hänvisning till /credit.

credit

PUT /3/invoices/{DocumentNumber}/credit skapar en kreditfaktura för hela den bokförda fakturan, rad för rad, daterad idag. Delkreditering stöds inte via den här endpointen.

Avvikelse från Fortnox: kreditfakturan får en egen nummerserie i Klirr och är inte adresserbar som faktura. Svaret är i stället den ursprungliga fakturan, nu med Cancelled: true och Balance nollat.

  • Ett utkast kan inte krediteras: 400 (makulera det med /cancel).
  • En redan helt krediterad faktura: 409.

Fel

StatusCodeNär
4009000400CustomerNumber saknas vid POST; ogiltigt datum eller TermsOfPayment; annan valuta än SEK; VATIncluded: true; Discount, Freight eller AdministrationFee; VATCode och VAT stämmer inte överens; ostödd sökparameter (yourordernumber, lastmodified); /credit på utkast; /email utan kundens e-post; /print eller /preview på faktura utan rader.
4039000403Planens fakturakvot är förbrukad (vid POST).
4049000404Kan inte hitta fakturan, eller kunden i CustomerNumber finns inte.
4099000409PUT eller /cancel på en bokförd faktura; /credit på en redan krediterad faktura.
5029000500Mejlet kunde inte skickas via /email (fakturan är oförändrad).

Allmänna fel (401, 403, 429) beskrivs under Felkoder.

On this page