Skip to content

Fakturaflödesexempel

Den här guiden täcker de viktigaste API-åtgärderna för att hantera fakturor och deras tillhörande ärenden.

Alla API-anrop kräver en giltig autentiseringstoken i X-API-Key-headern. För detaljer om autentiseringsprocessen och tokenhantering, se Autentiseringsdokumentationen.

I den här guiden använder vi klassen AuthTokenProvider (dokumenterad i autentiseringsguiden) för att hantera tokens.

Innehållsförteckning


Fakturaregistrering

Registrera en ny faktura via Invoice Registration endpoint. Svaret returnerar både ett invoice--registration-ID och, viktigast av allt, ett ärende-ID (_case). Ärende-ID:t används för alla efterföljande åtgärder på denna faktura.

Kundtypen bestäms genom att sätta en av is_person, is_company eller is_foreign till true. Detta påverkar hur Amili hanterar ärendet — till exempel kan företagsfakturor distribueras via e-faktura (Peppol).

Privatperson

Registrera en faktura där kunden är en privatperson (is_person: true). id_number ska vara kundens svenska personnummer.

typescript
const invoiceData = {
  account: '674dbeaf08847b9501cc9132',
  creditor: '674dbeb208847b9501cc9138',
  invoice_number: 'INV-2026-001',
  invoice_date: new Date().toISOString(),
  invoice_due_date: '2026-04-30T00:00:00Z',
  currency: 'SEK',
  invoice_type: 'invoice',
  customer: {
    name: 'Anna Andersson',
    id_number: '19900101-1234',
    is_person: true,
    address: {
      address_line_1: 'Storgatan 12',
      zip_code: '11122',
      city: 'Stockholm',
      country: 'SE',
    },
    mobile_number: '+46701234567',
    email: 'anna.andersson@example.se',
  },
  matrix: [
    {
      article_description: 'Service fee',
      unit_price: 500.0,
      number_of_units: 1,
      total_price_excluding_vat: 500.0,
      unit_vat_percent: '25%',
    },
  ],
}

const token = await auth.getValidToken()
const response = await axios.post(
  'https://api-sandbox.amili.se/invoice--registrations',
  invoiceData,
  {
    headers: {
      'X-API-Key': token,
      'Content-Type': 'application/json',
    },
  }
)
python
from datetime import datetime

invoice_data = {
    "account": "674dbeaf08847b9501cc9132",
    "creditor": "674dbeb208847b9501cc9138",
    "invoice_number": "INV-2026-001",
    "invoice_date": datetime.utcnow().isoformat() + "Z",
    "invoice_due_date": "2026-04-30T00:00:00Z",
    "currency": "SEK",
    "invoice_type": "invoice",
    "customer": {
        "name": "Anna Andersson",
        "id_number": "19900101-1234",
        "is_person": True,
        "address": {
            "address_line_1": "Storgatan 12",
            "zip_code": "11122",
            "city": "Stockholm",
            "country": "SE"
        },
        "mobile_number": "+46701234567",
        "email": "anna.andersson@example.se"
    },
    "matrix": [{
        "article_description": "Service fee",
        "unit_price": 500.0,
        "number_of_units": 1,
        "total_price_excluding_vat": 500.0,
        "unit_vat_percent": "25%"
    }]
}

token = auth.get_valid_token()
response = requests.post(
    'https://api-sandbox.amili.se/invoice--registrations',
    json=invoice_data,
    headers={
        'X-API-Key': token,
        'Content-Type': 'application/json'
    }
)
response.raise_for_status()
result = response.json()

Svaret kommer att vara:

json
{
  "_updated": "Tue, 07 Oct 2025 07:41:01 GMT",
  "_created": "Tue, 07 Oct 2025 07:41:01 GMT",
  "_etag": "8bfdf8614dc48aa763568c6e6a914e3f0503e18e",
  "_id": "68e4c40d7fcb697a78cb1a32",
  "_status": "OK",
  "_invoice": "68e4c40d7fcb697a78cb1a32",
  "_case": "68e4c40d93ee14723d28fa95",
  "_ocr_number": "68e4c40e7fcb697a78cb1a36",
  "ocr_number_ocr": "20252806663259506081"
}

Viktiga ID:n i svaret

  • _id — Fakturaregistrerings-ID:t (posten för denna begäran)
  • _caseÄrende-ID:t — använd detta för alla efterföljande åtgärder (kreditering, annullering, betalning)
  • _invoice — Faktura-ID:t
  • _ocr_number — OCR-nummerresursens ID
  • ocr_number_ocr — OCR-nummersträngen för betalningsreferens

Företag

Registrera en faktura där kunden är ett företag eller en organisation (is_company: true). Företagsfakturor stöder ytterligare fält som möjliggör e-fakturering och organisationsidentifiering.

Företagsspecifika attribut

Följande fält är specifika för eller särskilt relevanta för företagskunder:

  • is_company: true — Identifierar kunden som en svensk juridisk person
  • id_number — Organisationsnumret, t.ex. "556123-4567"
  • customer_number — Er interna kundreferens för detta företag
  • address.gln — Global Location Number, används för Peppol e-fakturaroutning
  • preferred_invoice_distribution — Sätt till "electronic_invoicing_company" för e-faktura via Peppol
  • your_reference — Kontaktperson eller referens hos företaget
  • contract_reference — Kontrakts- eller avtalsreferensnummer
typescript
const invoiceData = {
  account: '674dbeaf08847b9501cc9132',
  creditor: '674dbeb208847b9501cc9138',
  invoice_number: 'INV-2026-002',
  invoice_date: new Date().toISOString(),
  invoice_due_date: '2026-04-30T00:00:00Z',
  currency: 'SEK',
  invoice_type: 'invoice',
  preferred_invoice_distribution: 'electronic_invoicing_company', // e-invoicing via Peppol
  your_reference: 'Maria Johansson', // contact at the company
  contract_reference: 'AVT-2026-100', // contract reference
  customer: {
    name: 'Exempel Bygg AB',
    customer_number: 'CUST-10042',
    id_number: '556123-4567', // organization number
    is_company: true,
    address: {
      gln: '7350000000001', // GLN for e-invoicing
      address_line_1: 'Industrivägen 8',
      zip_code: '41505',
      city: 'Göteborg',
      country: 'SE',
    },
    email: 'faktura@exempelbygg.se',
  },
  matrix: [
    {
      article_description: 'Service fee',
      unit_price: 1200.0,
      number_of_units: 1,
      total_price_excluding_vat: 1200.0,
      unit_vat_percent: '25%',
    },
  ],
}

const token = await auth.getValidToken()
const response = await axios.post(
  'https://api-sandbox.amili.se/invoice--registrations',
  invoiceData,
  {
    headers: {
      'X-API-Key': token,
      'Content-Type': 'application/json',
    },
  }
)
python
from datetime import datetime

invoice_data = {
    "account": "674dbeaf08847b9501cc9132",
    "creditor": "674dbeb208847b9501cc9138",
    "invoice_number": "INV-2026-002",
    "invoice_date": datetime.utcnow().isoformat() + "Z",
    "invoice_due_date": "2026-04-30T00:00:00Z",
    "currency": "SEK",
    "invoice_type": "invoice",
    "preferred_invoice_distribution": "electronic_invoicing_company",  # e-invoicing via Peppol
    "your_reference": "Maria Johansson",  # contact at the company
    "contract_reference": "AVT-2026-100",  # contract reference
    "customer": {
        "name": "Exempel Bygg AB",
        "customer_number": "CUST-10042",
        "id_number": "556123-4567",  # organization number
        "is_company": True,
        "address": {
            "gln": "7350000000001",  # GLN for e-invoicing
            "address_line_1": "Industrivägen 8",
            "zip_code": "41505",
            "city": "Göteborg",
            "country": "SE"
        },
        "email": "faktura@exempelbygg.se"
    },
    "matrix": [{
        "article_description": "Service fee",
        "unit_price": 1200.0,
        "number_of_units": 1,
        "total_price_excluding_vat": 1200.0,
        "unit_vat_percent": "25%"
    }]
}

token = auth.get_valid_token()
response = requests.post(
    'https://api-sandbox.amili.se/invoice--registrations',
    json=invoice_data,
    headers={
        'X-API-Key': token,
        'Content-Type': 'application/json'
    }
)
response.raise_for_status()
result = response.json()

Svaret följer samma struktur som för en personfaktura:

json
{
  "_updated": "Mon, 10 Nov 2025 09:22:15 GMT",
  "_created": "Mon, 10 Nov 2025 09:22:15 GMT",
  "_etag": "c4a7e82f1b3d6e9a0f5c8d2b7e4a1f6c3d9b0e5a",
  "_id": "69a1b2c3d4e5f6a7b8c9d0e1",
  "_status": "OK",
  "_invoice": "69a1b2c3d4e5f6a7b8c9d0e1",
  "_case": "69a1b2c3d4e5f6a7b8c9d0e2",
  "_ocr_number": "69a1b2c3d4e5f6a7b8c9d0e3",
  "ocr_number_ocr": "20261504827391640052"
}

För att hämta aktuell status för ett ärende, se Uppföljning av ärendestatus.

Nästa steg

När ett ärende har skapats från en fakturaregistrering kan du utföra åtgärder som att registrera betalningar, kreditera belopp eller annullera ärendet. Dessa åtgärder är gemensamma för alla ärenden oavsett hur de skapades.

Se guiden Borgenärsåtgärder för detaljerade exempel på:

  • Borgenärsbetalning — Registrera en betalning mottagen direkt från gäldenären
  • Borgenärskreditering — Kreditera en del av kapitalet på ett ärende
  • Borgenärsannullering — Annullera ett ärende helt

Du kan också följa livscykeln och det ekonomiska utfallet för dina ärenden: