Zum Inhalt springen

Angebote

Angebote und Auftragsbestätigungen.
GET/api/v1/offers

Angebote und Auftragsbestätigungen, neueste zuerst.

Berechtigung: offers:read

Query-Parameter

  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"
  • type"offer" | "order_confirmation"
  • contactIdstring
    max. 128 Zeichen
  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<Offer>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • object"offer"Pflicht
    • type"offer" | "order_confirmation"Pflicht
    • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
    • numberstring | nullPflicht
    • contactIdstring | nullPflicht
      max. 128 Zeichen
    • recipientDocumentRecipientPflicht
      • namestringPflicht
        Firma oder Name
        max. 160 Zeichen
      • additionstring
        Zusatz, z. B. z. Hd. Frau Muster
        max. 160 Zeichen
      • streetstringPflicht
        max. 160 Zeichen · Standard: ""
      • zipCodestringPflicht
        max. 10 Zeichen · Standard: ""
      • citystringPflicht
        max. 80 Zeichen · Standard: ""
      • countrystringPflicht
        Ländercode ISO 3166-1 alpha-2
        max. 2 Zeichen · Standard: "DE"
      • emailstring (email)
        Rechnungsempfänger (E-Mail)
        max. 254 Zeichen
      • vatIdstring
        USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
      • leitwegIdstring
        Leitweg-ID (XRechnung an Behörden)
        max. 60 Zeichen
      • customerNumberstring
        Kundennummer (beim Festschreiben vergeben)
        max. 40 Zeichen
    • senderSenderSnapshot | nullPflicht
      • companyNamestringPflicht
      • ownerNamestring
      • legalFormstring
      • managingDirectorsstring
      • streetstringPflicht
      • zipCodestringPflicht
      • citystringPflicht
      • countryCodestringPflicht
      • phonestring
      • emailstring
      • websitestring
      • taxNumberstring
      • vatIdstring
      • smallBusinessbooleanPflicht
      • commercialRegisterobject
      • bankobject
      • invoiceFooterstring
    • issueDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • validUntilstring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • priceMode"net" | "gross"Pflicht
    • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
      Steuerbehandlung des Belegs
    • taxNoticestring | nullPflicht
    • currency"EUR"Pflicht
    • subjectstringPflicht
    • introTextstringPflicht
    • closingTextstringPflicht
    • referencestringPflicht
    • linesArray<DocumentLine>Pflicht
      • idstring
        stabile Positions-ID (vom Server vergeben, wenn leer)
        max. 40 Zeichen
      • type"item" | "text" | "subtotal"
        Position, reine Textzeile oder Zwischensumme
        Standard: "item"
      • articleIdstring
        Bezug zum Artikelstamm
        max. 128 Zeichen
      • titlestringPflicht
        max. 300 Zeichen
      • descriptionstring
        max. 5000 Zeichen
      • quantitynumber
        -1000000–1000000 · Standard: 1
      • unitstring
        Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
        max. 20 Zeichen
      • unitPriceCentsinteger
        Betrag in Cent
        -100000000000–100000000000 · Standard: 0
      • discountPercentnumber
        0–100
      • taxRatenumber
        Steuersatz in Prozent (19, 7, 0 …)
        0–100 · Standard: 19
      • totalCentsinteger
        Betrag in Cent
        -100000000000–100000000000
      • servicePeriodobject
      • projectIdstring
        max. 128 Zeichen
      • timeEntryIdsArray<string>
        max. 128 Zeichen
    • totalsDocumentTotalsPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • groupsArray<object>Pflicht
    • relatedOfferIdstring | nullPflicht
      Auftragsbestätigung: zugrunde liegendes Angebot
      max. 128 Zeichen
    • orderConfirmationIdstring | nullPflicht
      max. 128 Zeichen
    • convertedInvoiceIdsArray<string>Pflicht
      daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
      max. 128 Zeichen
    • projectIdstring | nullPflicht
      max. 128 Zeichen
    • decisionNotestring | nullPflicht
    • acceptedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • rejectedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • language"de" | "en"Pflicht
      Belegsprache (beim Festschreiben fixiert)
    • dispatchobjectPflicht
      • countintegerPflicht
        -9007199254740991–9007199254740991
      • lastChannel"email" | "post" | nullPflicht
      • lastSentAtstring (date-time) | nullPflicht
        Zeitpunkt (ISO 8601)
    • lockedbooleanPflicht
    • lockedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • updatedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/offers' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "object": "offer",
      "type": "offer",
      "status": "draft",
      "number": "string",
      "contactId": "string",
      "recipient": {
        "name": "string",
        "addition": "string",
        "street": "",
        "zipCode": "",
        "city": "",
        "country": "DE",
        "email": "[email protected]",
        "vatId": "string",
        "leitwegId": "string",
        "customerNumber": "string"
      },
      "sender": {
        "companyName": null,
        "ownerName": null,
        "legalForm": null,
        "managingDirectors": null,
        "street": null,
        "zipCode": null,
        "city": null,
        "countryCode": null,
        "phone": null,
        "email": null,
        "website": null,
        "taxNumber": null,
        "vatId": null,
        "smallBusiness": null,
        "commercialRegister": null,
        "bank": null,
        "invoiceFooter": null
      },
      "issueDate": "2026-11-01",
      "validUntil": "2026-11-01",
      "priceMode": "net",
      "taxTreatment": "regular",
      "taxNotice": "string",
      "currency": "EUR",
      "subject": "string",
      "introText": "string",
      "closingText": "string",
      "reference": "string",
      "lines": [
        {
          "id": null,
          "type": null,
          "articleId": null,
          "title": null,
          "description": null,
          "quantity": null,
          "unit": null,
          "unitPriceCents": null,
          "discountPercent": null,
          "taxRate": null,
          "totalCents": null,
          "servicePeriod": null,
          "projectId": null,
          "timeEntryIds": null
        }
      ],
      "totals": {
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0,
        "groups": [
          null
        ]
      },
      "relatedOfferId": "string",
      "orderConfirmationId": "string",
      "convertedInvoiceIds": [
        "string"
      ],
      "projectId": "string",
      "decisionNote": "string",
      "acceptedAt": "2026-11-01T09:30:00.000Z",
      "rejectedAt": "2026-11-01T09:30:00.000Z",
      "language": "de",
      "dispatch": {
        "count": 0,
        "lastChannel": "email",
        "lastSentAt": "2026-11-01T09:30:00.000Z"
      },
      "locked": false,
      "lockedAt": "2026-11-01T09:30:00.000Z",
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/offers

Empfänger, Steuerbehandlung und Preismodus werden – wenn nicht angegeben – aus dem Kontakt bzw. Firma & Rechnung übernommen.

Berechtigung: offers:write

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · OfferCreate

  • type"offer" | "order_confirmation"
    Standard: "offer"
  • contactIdstring | null
    max. 128 Zeichen
  • recipientDocumentRecipient
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • issueDatestring (date) | null
    Angebotsdatum; leer = Tag des Festschreibens
  • validUntilstring (date) | null
    gültig bis; leer = Datum + Gültigkeit aus den Einstellungen
  • priceMode"net" | "gross"
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"
    Steuerbehandlung des Belegs
  • subjectstring
    max. 200 Zeichen
  • introTextstring
    max. 5000 Zeichen
  • closingTextstring
    max. 5000 Zeichen
  • referencestring
    max. 100 Zeichen
  • linesArray<DocumentLine>
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • projectIdstring | null
    max. 128 Zeichen
  • language"de" | "en" | null
    Belegsprache (PDF, E-Mail); leer/null = Sprache des Kontakts. Wird beim Festschreiben fixiert.

Antwort 201 · Offer

  • idstringPflicht
    max. 128 Zeichen
  • object"offer"Pflicht
  • type"offer" | "order_confirmation"Pflicht
  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
  • numberstring | nullPflicht
  • contactIdstring | nullPflicht
    max. 128 Zeichen
  • recipientDocumentRecipientPflicht
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • senderSenderSnapshot | nullPflicht
    • companyNamestringPflicht
    • ownerNamestring
    • legalFormstring
    • managingDirectorsstring
    • streetstringPflicht
    • zipCodestringPflicht
    • citystringPflicht
    • countryCodestringPflicht
    • phonestring
    • emailstring
    • websitestring
    • taxNumberstring
    • vatIdstring
    • smallBusinessbooleanPflicht
    • commercialRegisterobject
      • courtstring
      • numberstring
    • bankobject
      • accountHolderstring
      • ibanstring
      • bicstring
      • bankNamestring
    • invoiceFooterstring
  • issueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • validUntilstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • priceMode"net" | "gross"Pflicht
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
    Steuerbehandlung des Belegs
  • taxNoticestring | nullPflicht
  • currency"EUR"Pflicht
  • subjectstringPflicht
  • introTextstringPflicht
  • closingTextstringPflicht
  • referencestringPflicht
  • linesArray<DocumentLine>Pflicht
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • totalsDocumentTotalsPflicht
    • netCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • taxCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • grossCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • groupsArray<object>Pflicht
      • taxRatenumberPflicht
      • categorystringPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
  • relatedOfferIdstring | nullPflicht
    Auftragsbestätigung: zugrunde liegendes Angebot
    max. 128 Zeichen
  • orderConfirmationIdstring | nullPflicht
    max. 128 Zeichen
  • convertedInvoiceIdsArray<string>Pflicht
    daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
    max. 128 Zeichen
  • projectIdstring | nullPflicht
    max. 128 Zeichen
  • decisionNotestring | nullPflicht
  • acceptedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • rejectedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • language"de" | "en"Pflicht
    Belegsprache (beim Festschreiben fixiert)
  • dispatchobjectPflicht
    • countintegerPflicht
      -9007199254740991–9007199254740991
    • lastChannel"email" | "post" | nullPflicht
    • lastSentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • lockedbooleanPflicht
  • lockedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/offers' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "type": "offer",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [],
  "projectId": "string",
  "language": "de"
}'
Antwort 201
{
  "id": "string",
  "object": "offer",
  "type": "offer",
  "status": "draft",
  "number": "string",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "sender": {
    "companyName": "string",
    "ownerName": "string",
    "legalForm": "string",
    "managingDirectors": "string",
    "street": "string",
    "zipCode": "string",
    "city": "string",
    "countryCode": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "taxNumber": "string",
    "vatId": "string",
    "smallBusiness": false,
    "commercialRegister": {
      "court": "string",
      "number": "string"
    },
    "bank": {
      "accountHolder": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string"
    },
    "invoiceFooter": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "taxNotice": "string",
  "currency": "EUR",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "totals": {
    "netCents": 0,
    "taxCents": 0,
    "grossCents": 0,
    "groups": [
      {
        "taxRate": 0,
        "category": "string",
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0
      }
    ]
  },
  "relatedOfferId": "string",
  "orderConfirmationId": "string",
  "convertedInvoiceIds": [
    "string"
  ],
  "projectId": "string",
  "decisionNote": "string",
  "acceptedAt": "2026-11-01T09:30:00.000Z",
  "rejectedAt": "2026-11-01T09:30:00.000Z",
  "language": "de",
  "dispatch": {
    "count": 0,
    "lastChannel": "email",
    "lastSentAt": "2026-11-01T09:30:00.000Z"
  },
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/offers/{id}

Berechtigung: offers:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200 · Offer

  • idstringPflicht
    max. 128 Zeichen
  • object"offer"Pflicht
  • type"offer" | "order_confirmation"Pflicht
  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
  • numberstring | nullPflicht
  • contactIdstring | nullPflicht
    max. 128 Zeichen
  • recipientDocumentRecipientPflicht
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • senderSenderSnapshot | nullPflicht
    • companyNamestringPflicht
    • ownerNamestring
    • legalFormstring
    • managingDirectorsstring
    • streetstringPflicht
    • zipCodestringPflicht
    • citystringPflicht
    • countryCodestringPflicht
    • phonestring
    • emailstring
    • websitestring
    • taxNumberstring
    • vatIdstring
    • smallBusinessbooleanPflicht
    • commercialRegisterobject
      • courtstring
      • numberstring
    • bankobject
      • accountHolderstring
      • ibanstring
      • bicstring
      • bankNamestring
    • invoiceFooterstring
  • issueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • validUntilstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • priceMode"net" | "gross"Pflicht
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
    Steuerbehandlung des Belegs
  • taxNoticestring | nullPflicht
  • currency"EUR"Pflicht
  • subjectstringPflicht
  • introTextstringPflicht
  • closingTextstringPflicht
  • referencestringPflicht
  • linesArray<DocumentLine>Pflicht
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • totalsDocumentTotalsPflicht
    • netCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • taxCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • grossCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • groupsArray<object>Pflicht
      • taxRatenumberPflicht
      • categorystringPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
  • relatedOfferIdstring | nullPflicht
    Auftragsbestätigung: zugrunde liegendes Angebot
    max. 128 Zeichen
  • orderConfirmationIdstring | nullPflicht
    max. 128 Zeichen
  • convertedInvoiceIdsArray<string>Pflicht
    daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
    max. 128 Zeichen
  • projectIdstring | nullPflicht
    max. 128 Zeichen
  • decisionNotestring | nullPflicht
  • acceptedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • rejectedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • language"de" | "en"Pflicht
    Belegsprache (beim Festschreiben fixiert)
  • dispatchobjectPflicht
    • countintegerPflicht
      -9007199254740991–9007199254740991
    • lastChannel"email" | "post" | nullPflicht
    • lastSentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • lockedbooleanPflicht
  • lockedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/offers/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "object": "offer",
  "type": "offer",
  "status": "draft",
  "number": "string",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "sender": {
    "companyName": "string",
    "ownerName": "string",
    "legalForm": "string",
    "managingDirectors": "string",
    "street": "string",
    "zipCode": "string",
    "city": "string",
    "countryCode": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "taxNumber": "string",
    "vatId": "string",
    "smallBusiness": false,
    "commercialRegister": {
      "court": "string",
      "number": "string"
    },
    "bank": {
      "accountHolder": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string"
    },
    "invoiceFooter": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "taxNotice": "string",
  "currency": "EUR",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "totals": {
    "netCents": 0,
    "taxCents": 0,
    "grossCents": 0,
    "groups": [
      {
        "taxRate": 0,
        "category": "string",
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0
      }
    ]
  },
  "relatedOfferId": "string",
  "orderConfirmationId": "string",
  "convertedInvoiceIds": [
    "string"
  ],
  "projectId": "string",
  "decisionNote": "string",
  "acceptedAt": "2026-11-01T09:30:00.000Z",
  "rejectedAt": "2026-11-01T09:30:00.000Z",
  "language": "de",
  "dispatch": {
    "count": 0,
    "lastChannel": "email",
    "lastSentAt": "2026-11-01T09:30:00.000Z"
  },
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/offers/{id}

Nur Entwürfe. Festgeschriebene Angebote: 409 document_locked – bitte kopieren und neu ausstellen.

Berechtigung: offers:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Body (JSON) · OfferUpdate

  • contactIdstring | null
    max. 128 Zeichen
  • recipientDocumentRecipient
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • issueDatestring (date) | null
    Angebotsdatum; leer = Tag des Festschreibens
  • validUntilstring (date) | null
    gültig bis; leer = Datum + Gültigkeit aus den Einstellungen
  • priceMode"net" | "gross"
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"
    Steuerbehandlung des Belegs
  • subjectstring
    max. 200 Zeichen
  • introTextstring
    max. 5000 Zeichen
  • closingTextstring
    max. 5000 Zeichen
  • referencestring
    max. 100 Zeichen
  • linesArray<DocumentLine>
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • projectIdstring | null
    max. 128 Zeichen
  • language"de" | "en" | null
    Belegsprache (PDF, E-Mail); leer/null = Sprache des Kontakts. Wird beim Festschreiben fixiert.

Antwort 200 · Offer

  • idstringPflicht
    max. 128 Zeichen
  • object"offer"Pflicht
  • type"offer" | "order_confirmation"Pflicht
  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
  • numberstring | nullPflicht
  • contactIdstring | nullPflicht
    max. 128 Zeichen
  • recipientDocumentRecipientPflicht
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • senderSenderSnapshot | nullPflicht
    • companyNamestringPflicht
    • ownerNamestring
    • legalFormstring
    • managingDirectorsstring
    • streetstringPflicht
    • zipCodestringPflicht
    • citystringPflicht
    • countryCodestringPflicht
    • phonestring
    • emailstring
    • websitestring
    • taxNumberstring
    • vatIdstring
    • smallBusinessbooleanPflicht
    • commercialRegisterobject
      • courtstring
      • numberstring
    • bankobject
      • accountHolderstring
      • ibanstring
      • bicstring
      • bankNamestring
    • invoiceFooterstring
  • issueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • validUntilstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • priceMode"net" | "gross"Pflicht
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
    Steuerbehandlung des Belegs
  • taxNoticestring | nullPflicht
  • currency"EUR"Pflicht
  • subjectstringPflicht
  • introTextstringPflicht
  • closingTextstringPflicht
  • referencestringPflicht
  • linesArray<DocumentLine>Pflicht
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • totalsDocumentTotalsPflicht
    • netCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • taxCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • grossCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • groupsArray<object>Pflicht
      • taxRatenumberPflicht
      • categorystringPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
  • relatedOfferIdstring | nullPflicht
    Auftragsbestätigung: zugrunde liegendes Angebot
    max. 128 Zeichen
  • orderConfirmationIdstring | nullPflicht
    max. 128 Zeichen
  • convertedInvoiceIdsArray<string>Pflicht
    daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
    max. 128 Zeichen
  • projectIdstring | nullPflicht
    max. 128 Zeichen
  • decisionNotestring | nullPflicht
  • acceptedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • rejectedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • language"de" | "en"Pflicht
    Belegsprache (beim Festschreiben fixiert)
  • dispatchobjectPflicht
    • countintegerPflicht
      -9007199254740991–9007199254740991
    • lastChannel"email" | "post" | nullPflicht
    • lastSentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • lockedbooleanPflicht
  • lockedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/offers/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "projectId": "string",
  "language": "de"
}'
Antwort 200
{
  "id": "string",
  "object": "offer",
  "type": "offer",
  "status": "draft",
  "number": "string",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "sender": {
    "companyName": "string",
    "ownerName": "string",
    "legalForm": "string",
    "managingDirectors": "string",
    "street": "string",
    "zipCode": "string",
    "city": "string",
    "countryCode": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "taxNumber": "string",
    "vatId": "string",
    "smallBusiness": false,
    "commercialRegister": {
      "court": "string",
      "number": "string"
    },
    "bank": {
      "accountHolder": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string"
    },
    "invoiceFooter": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "taxNotice": "string",
  "currency": "EUR",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "totals": {
    "netCents": 0,
    "taxCents": 0,
    "grossCents": 0,
    "groups": [
      {
        "taxRate": 0,
        "category": "string",
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0
      }
    ]
  },
  "relatedOfferId": "string",
  "orderConfirmationId": "string",
  "convertedInvoiceIds": [
    "string"
  ],
  "projectId": "string",
  "decisionNote": "string",
  "acceptedAt": "2026-11-01T09:30:00.000Z",
  "rejectedAt": "2026-11-01T09:30:00.000Z",
  "language": "de",
  "dispatch": {
    "count": 0,
    "lastChannel": "email",
    "lastSentAt": "2026-11-01T09:30:00.000Z"
  },
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
DELETE/api/v1/offers/{id}

Berechtigung: offers:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 204

Erfolg, keine Antwort

Mögliche Fehler: 400, 401, 403, 404, 409, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/offers/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
POST/api/v1/offers/{id}/accept

Berechtigung: offers:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · OfferDecision

  • notestring
    Notiz, z. B. Grund der Ablehnung
    max. 1000 Zeichen

Antwort 200 · Offer

  • idstringPflicht
    max. 128 Zeichen
  • object"offer"Pflicht
  • type"offer" | "order_confirmation"Pflicht
  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
  • numberstring | nullPflicht
  • contactIdstring | nullPflicht
    max. 128 Zeichen
  • recipientDocumentRecipientPflicht
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • senderSenderSnapshot | nullPflicht
    • companyNamestringPflicht
    • ownerNamestring
    • legalFormstring
    • managingDirectorsstring
    • streetstringPflicht
    • zipCodestringPflicht
    • citystringPflicht
    • countryCodestringPflicht
    • phonestring
    • emailstring
    • websitestring
    • taxNumberstring
    • vatIdstring
    • smallBusinessbooleanPflicht
    • commercialRegisterobject
      • courtstring
      • numberstring
    • bankobject
      • accountHolderstring
      • ibanstring
      • bicstring
      • bankNamestring
    • invoiceFooterstring
  • issueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • validUntilstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • priceMode"net" | "gross"Pflicht
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
    Steuerbehandlung des Belegs
  • taxNoticestring | nullPflicht
  • currency"EUR"Pflicht
  • subjectstringPflicht
  • introTextstringPflicht
  • closingTextstringPflicht
  • referencestringPflicht
  • linesArray<DocumentLine>Pflicht
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • totalsDocumentTotalsPflicht
    • netCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • taxCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • grossCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • groupsArray<object>Pflicht
      • taxRatenumberPflicht
      • categorystringPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
  • relatedOfferIdstring | nullPflicht
    Auftragsbestätigung: zugrunde liegendes Angebot
    max. 128 Zeichen
  • orderConfirmationIdstring | nullPflicht
    max. 128 Zeichen
  • convertedInvoiceIdsArray<string>Pflicht
    daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
    max. 128 Zeichen
  • projectIdstring | nullPflicht
    max. 128 Zeichen
  • decisionNotestring | nullPflicht
  • acceptedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • rejectedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • language"de" | "en"Pflicht
    Belegsprache (beim Festschreiben fixiert)
  • dispatchobjectPflicht
    • countintegerPflicht
      -9007199254740991–9007199254740991
    • lastChannel"email" | "post" | nullPflicht
    • lastSentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • lockedbooleanPflicht
  • lockedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/offers/ID/accept' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "note": "string"
}'
Antwort 200
{
  "id": "string",
  "object": "offer",
  "type": "offer",
  "status": "draft",
  "number": "string",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "sender": {
    "companyName": "string",
    "ownerName": "string",
    "legalForm": "string",
    "managingDirectors": "string",
    "street": "string",
    "zipCode": "string",
    "city": "string",
    "countryCode": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "taxNumber": "string",
    "vatId": "string",
    "smallBusiness": false,
    "commercialRegister": {
      "court": "string",
      "number": "string"
    },
    "bank": {
      "accountHolder": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string"
    },
    "invoiceFooter": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "taxNotice": "string",
  "currency": "EUR",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "totals": {
    "netCents": 0,
    "taxCents": 0,
    "grossCents": 0,
    "groups": [
      {
        "taxRate": 0,
        "category": "string",
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0
      }
    ]
  },
  "relatedOfferId": "string",
  "orderConfirmationId": "string",
  "convertedInvoiceIds": [
    "string"
  ],
  "projectId": "string",
  "decisionNote": "string",
  "acceptedAt": "2026-11-01T09:30:00.000Z",
  "rejectedAt": "2026-11-01T09:30:00.000Z",
  "language": "de",
  "dispatch": {
    "count": 0,
    "lastChannel": "email",
    "lastSentAt": "2026-11-01T09:30:00.000Z"
  },
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/offers/{id}/audit-log

Berechtigung: offers:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Query-Parameter

  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<AuditEntry>Pflicht
    • idstringPflicht
      laufende Nummer im Änderungsprotokoll
    • seqintegerPflicht
      -9007199254740991–9007199254740991
    • atstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • actorActorPflicht
      • type"user" | "api_key" | "oauth" | "system"Pflicht
      • idstringPflicht
      • labelstring
    • actionstringPflicht
    • changesobjectPflicht
    • metaobject | nullPflicht
    • hashstringPflicht
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/offers/ID/audit-log' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "seq": 0,
      "at": "2026-11-01T09:30:00.000Z",
      "actor": {
        "type": "user",
        "id": "string",
        "label": "string"
      },
      "action": "string",
      "changes": {},
      "meta": {},
      "hash": "string"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/offers/{id}/convert

invoice: Rechnungsentwurf mit allen Positionen. advance_invoice + percent: Abschlagsrechnung (je Steuersatz eine Position). final_invoice: Schlussrechnung, die alle festgeschriebenen Abschlagsrechnungen zu diesem Angebot abzieht. order_confirmation: Auftragsbestätigung als Entwurf. Das Angebot gilt danach als angenommen bzw. abgerechnet.

Berechtigung: offers:write, invoices:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · OfferConvert

  • target"invoice" | "advance_invoice" | "final_invoice" | "order_confirmation"Pflicht
    invoice = Rechnung über alles, advance_invoice = Abschlag, final_invoice = Schlussrechnung abzgl. Abschlägen
  • percentnumber
    Abschlag in Prozent (nur advance_invoice)
    0.01–100

Antwort 201 · OfferConvertResult

  • offerOfferPflicht
    • idstringPflicht
      max. 128 Zeichen
    • object"offer"Pflicht
    • type"offer" | "order_confirmation"Pflicht
    • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
    • numberstring | nullPflicht
    • contactIdstring | nullPflicht
      max. 128 Zeichen
    • recipientDocumentRecipientPflicht
      • namestringPflicht
        Firma oder Name
        max. 160 Zeichen
      • additionstring
        Zusatz, z. B. z. Hd. Frau Muster
        max. 160 Zeichen
      • streetstringPflicht
        max. 160 Zeichen · Standard: ""
      • zipCodestringPflicht
        max. 10 Zeichen · Standard: ""
      • citystringPflicht
        max. 80 Zeichen · Standard: ""
      • countrystringPflicht
        Ländercode ISO 3166-1 alpha-2
        max. 2 Zeichen · Standard: "DE"
      • emailstring (email)
        Rechnungsempfänger (E-Mail)
        max. 254 Zeichen
      • vatIdstring
        USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
      • leitwegIdstring
        Leitweg-ID (XRechnung an Behörden)
        max. 60 Zeichen
      • customerNumberstring
        Kundennummer (beim Festschreiben vergeben)
        max. 40 Zeichen
    • senderSenderSnapshot | nullPflicht
      • companyNamestringPflicht
      • ownerNamestring
      • legalFormstring
      • managingDirectorsstring
      • streetstringPflicht
      • zipCodestringPflicht
      • citystringPflicht
      • countryCodestringPflicht
      • phonestring
      • emailstring
      • websitestring
      • taxNumberstring
      • vatIdstring
      • smallBusinessbooleanPflicht
      • commercialRegisterobject
      • bankobject
      • invoiceFooterstring
    • issueDatestring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • validUntilstring (date) | nullPflicht
      Datum (YYYY-MM-DD)
    • priceMode"net" | "gross"Pflicht
    • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
      Steuerbehandlung des Belegs
    • taxNoticestring | nullPflicht
    • currency"EUR"Pflicht
    • subjectstringPflicht
    • introTextstringPflicht
    • closingTextstringPflicht
    • referencestringPflicht
    • linesArray<DocumentLine>Pflicht
      • idstring
        stabile Positions-ID (vom Server vergeben, wenn leer)
        max. 40 Zeichen
      • type"item" | "text" | "subtotal"
        Position, reine Textzeile oder Zwischensumme
        Standard: "item"
      • articleIdstring
        Bezug zum Artikelstamm
        max. 128 Zeichen
      • titlestringPflicht
        max. 300 Zeichen
      • descriptionstring
        max. 5000 Zeichen
      • quantitynumber
        -1000000–1000000 · Standard: 1
      • unitstring
        Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
        max. 20 Zeichen
      • unitPriceCentsinteger
        Betrag in Cent
        -100000000000–100000000000 · Standard: 0
      • discountPercentnumber
        0–100
      • taxRatenumber
        Steuersatz in Prozent (19, 7, 0 …)
        0–100 · Standard: 19
      • totalCentsinteger
        Betrag in Cent
        -100000000000–100000000000
      • servicePeriodobject
      • projectIdstring
        max. 128 Zeichen
      • timeEntryIdsArray<string>
        max. 128 Zeichen
    • totalsDocumentTotalsPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • groupsArray<object>Pflicht
    • relatedOfferIdstring | nullPflicht
      Auftragsbestätigung: zugrunde liegendes Angebot
      max. 128 Zeichen
    • orderConfirmationIdstring | nullPflicht
      max. 128 Zeichen
    • convertedInvoiceIdsArray<string>Pflicht
      daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
      max. 128 Zeichen
    • projectIdstring | nullPflicht
      max. 128 Zeichen
    • decisionNotestring | nullPflicht
    • acceptedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • rejectedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • language"de" | "en"Pflicht
      Belegsprache (beim Festschreiben fixiert)
    • dispatchobjectPflicht
      • countintegerPflicht
        -9007199254740991–9007199254740991
      • lastChannel"email" | "post" | nullPflicht
      • lastSentAtstring (date-time) | nullPflicht
        Zeitpunkt (ISO 8601)
    • lockedbooleanPflicht
    • lockedAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • updatedAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
  • createdIdstringPflicht
    ID der erzeugten Rechnung bzw. Auftragsbestätigung
    max. 128 Zeichen
  • createdObject"invoice" | "offer"Pflicht

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/offers/ID/convert' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "target": "invoice",
  "percent": 0.01
}'
Antwort 201
{
  "offer": {
    "id": "string",
    "object": "offer",
    "type": "offer",
    "status": "draft",
    "number": "string",
    "contactId": "string",
    "recipient": {
      "name": "string",
      "addition": "string",
      "street": "",
      "zipCode": "",
      "city": "",
      "country": "DE",
      "email": "[email protected]",
      "vatId": "string",
      "leitwegId": "string",
      "customerNumber": "string"
    },
    "sender": {
      "companyName": null,
      "ownerName": null,
      "legalForm": null,
      "managingDirectors": null,
      "street": null,
      "zipCode": null,
      "city": null,
      "countryCode": null,
      "phone": null,
      "email": null,
      "website": null,
      "taxNumber": null,
      "vatId": null,
      "smallBusiness": null,
      "commercialRegister": null,
      "bank": null,
      "invoiceFooter": null
    },
    "issueDate": "2026-11-01",
    "validUntil": "2026-11-01",
    "priceMode": "net",
    "taxTreatment": "regular",
    "taxNotice": "string",
    "currency": "EUR",
    "subject": "string",
    "introText": "string",
    "closingText": "string",
    "reference": "string",
    "lines": [
      {
        "id": null,
        "type": null,
        "articleId": null,
        "title": null,
        "description": null,
        "quantity": null,
        "unit": null,
        "unitPriceCents": null,
        "discountPercent": null,
        "taxRate": null,
        "totalCents": null,
        "servicePeriod": null,
        "projectId": null,
        "timeEntryIds": null
      }
    ],
    "totals": {
      "netCents": 0,
      "taxCents": 0,
      "grossCents": 0,
      "groups": [
        null
      ]
    },
    "relatedOfferId": "string",
    "orderConfirmationId": "string",
    "convertedInvoiceIds": [
      "string"
    ],
    "projectId": "string",
    "decisionNote": "string",
    "acceptedAt": "2026-11-01T09:30:00.000Z",
    "rejectedAt": "2026-11-01T09:30:00.000Z",
    "language": "de",
    "dispatch": {
      "count": 0,
      "lastChannel": "email",
      "lastSentAt": "2026-11-01T09:30:00.000Z"
    },
    "locked": false,
    "lockedAt": "2026-11-01T09:30:00.000Z",
    "createdAt": "2026-11-01T09:30:00.000Z",
    "updatedAt": "2026-11-01T09:30:00.000Z"
  },
  "createdId": "string",
  "createdObject": "invoice"
}
GET/api/v1/offers/{id}/dispatches

Berechtigung: offers:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Query-Parameter

  • limitinteger
    Anzahl Einträge (1–100)
    1–100 · Standard: 25
  • cursorstring
    `nextCursor` der vorherigen Seite
    max. 500 Zeichen

Antwort 200

  • object"list"Pflicht
  • dataArray<InvoiceDispatch>Pflicht
    • idstringPflicht
      max. 128 Zeichen
    • invoiceIdstringPflicht
      max. 128 Zeichen
    • channel"email" | "post"Pflicht
    • status"sending" | "sent" | "failed"Pflicht
    • toArray<string>Pflicht
    • subjectstring | nullPflicht
    • registeredbooleanPflicht
    • letterIdstring | nullPflicht
    • trackingRefstring | nullPflicht
    • pageCountinteger | nullPflicht
      -9007199254740991–9007199254740991
    • priceEurostring | nullPflicht
    • errorstring | nullPflicht
    • actorActor | nullPflicht
      • type"user" | "api_key" | "oauth" | "system"Pflicht
      • idstringPflicht
      • labelstring
    • createdAtstring (date-time)Pflicht
      Zeitpunkt (ISO 8601)
    • sentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • hasMorebooleanPflicht
  • nextCursorstring | nullPflicht

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/offers/ID/dispatches' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "invoiceId": "string",
      "channel": "email",
      "status": "sending",
      "to": [
        "string"
      ],
      "subject": "string",
      "registered": false,
      "letterId": "string",
      "trackingRef": "string",
      "pageCount": 0,
      "priceEuro": "string",
      "error": "string",
      "actor": {
        "type": null,
        "id": null,
        "label": null
      },
      "createdAt": "2026-11-01T09:30:00.000Z",
      "sentAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/offers/{id}/duplicate

Berechtigung: offers:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Antwort 201 · Offer

  • idstringPflicht
    max. 128 Zeichen
  • object"offer"Pflicht
  • type"offer" | "order_confirmation"Pflicht
  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
  • numberstring | nullPflicht
  • contactIdstring | nullPflicht
    max. 128 Zeichen
  • recipientDocumentRecipientPflicht
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • senderSenderSnapshot | nullPflicht
    • companyNamestringPflicht
    • ownerNamestring
    • legalFormstring
    • managingDirectorsstring
    • streetstringPflicht
    • zipCodestringPflicht
    • citystringPflicht
    • countryCodestringPflicht
    • phonestring
    • emailstring
    • websitestring
    • taxNumberstring
    • vatIdstring
    • smallBusinessbooleanPflicht
    • commercialRegisterobject
      • courtstring
      • numberstring
    • bankobject
      • accountHolderstring
      • ibanstring
      • bicstring
      • bankNamestring
    • invoiceFooterstring
  • issueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • validUntilstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • priceMode"net" | "gross"Pflicht
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
    Steuerbehandlung des Belegs
  • taxNoticestring | nullPflicht
  • currency"EUR"Pflicht
  • subjectstringPflicht
  • introTextstringPflicht
  • closingTextstringPflicht
  • referencestringPflicht
  • linesArray<DocumentLine>Pflicht
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • totalsDocumentTotalsPflicht
    • netCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • taxCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • grossCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • groupsArray<object>Pflicht
      • taxRatenumberPflicht
      • categorystringPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
  • relatedOfferIdstring | nullPflicht
    Auftragsbestätigung: zugrunde liegendes Angebot
    max. 128 Zeichen
  • orderConfirmationIdstring | nullPflicht
    max. 128 Zeichen
  • convertedInvoiceIdsArray<string>Pflicht
    daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
    max. 128 Zeichen
  • projectIdstring | nullPflicht
    max. 128 Zeichen
  • decisionNotestring | nullPflicht
  • acceptedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • rejectedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • language"de" | "en"Pflicht
    Belegsprache (beim Festschreiben fixiert)
  • dispatchobjectPflicht
    • countintegerPflicht
      -9007199254740991–9007199254740991
    • lastChannel"email" | "post" | nullPflicht
    • lastSentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • lockedbooleanPflicht
  • lockedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/offers/ID/duplicate' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 201
{
  "id": "string",
  "object": "offer",
  "type": "offer",
  "status": "draft",
  "number": "string",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "sender": {
    "companyName": "string",
    "ownerName": "string",
    "legalForm": "string",
    "managingDirectors": "string",
    "street": "string",
    "zipCode": "string",
    "city": "string",
    "countryCode": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "taxNumber": "string",
    "vatId": "string",
    "smallBusiness": false,
    "commercialRegister": {
      "court": "string",
      "number": "string"
    },
    "bank": {
      "accountHolder": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string"
    },
    "invoiceFooter": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "taxNotice": "string",
  "currency": "EUR",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "totals": {
    "netCents": 0,
    "taxCents": 0,
    "grossCents": 0,
    "groups": [
      {
        "taxRate": 0,
        "category": "string",
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0
      }
    ]
  },
  "relatedOfferId": "string",
  "orderConfirmationId": "string",
  "convertedInvoiceIds": [
    "string"
  ],
  "projectId": "string",
  "decisionNote": "string",
  "acceptedAt": "2026-11-01T09:30:00.000Z",
  "rejectedAt": "2026-11-01T09:30:00.000Z",
  "language": "de",
  "dispatch": {
    "count": 0,
    "lastChannel": "email",
    "lastSentAt": "2026-11-01T09:30:00.000Z"
  },
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
POST/api/v1/offers/{id}/finalize

Vergibt die Angebots- bzw. Auftragsnummer, setzt Datum und „gültig bis“ und sperrt den Inhalt. Status danach sent (ausgestellt).

Berechtigung: offers:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Antwort 200 · Offer

  • idstringPflicht
    max. 128 Zeichen
  • object"offer"Pflicht
  • type"offer" | "order_confirmation"Pflicht
  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
  • numberstring | nullPflicht
  • contactIdstring | nullPflicht
    max. 128 Zeichen
  • recipientDocumentRecipientPflicht
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • senderSenderSnapshot | nullPflicht
    • companyNamestringPflicht
    • ownerNamestring
    • legalFormstring
    • managingDirectorsstring
    • streetstringPflicht
    • zipCodestringPflicht
    • citystringPflicht
    • countryCodestringPflicht
    • phonestring
    • emailstring
    • websitestring
    • taxNumberstring
    • vatIdstring
    • smallBusinessbooleanPflicht
    • commercialRegisterobject
      • courtstring
      • numberstring
    • bankobject
      • accountHolderstring
      • ibanstring
      • bicstring
      • bankNamestring
    • invoiceFooterstring
  • issueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • validUntilstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • priceMode"net" | "gross"Pflicht
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
    Steuerbehandlung des Belegs
  • taxNoticestring | nullPflicht
  • currency"EUR"Pflicht
  • subjectstringPflicht
  • introTextstringPflicht
  • closingTextstringPflicht
  • referencestringPflicht
  • linesArray<DocumentLine>Pflicht
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • totalsDocumentTotalsPflicht
    • netCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • taxCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • grossCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • groupsArray<object>Pflicht
      • taxRatenumberPflicht
      • categorystringPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
  • relatedOfferIdstring | nullPflicht
    Auftragsbestätigung: zugrunde liegendes Angebot
    max. 128 Zeichen
  • orderConfirmationIdstring | nullPflicht
    max. 128 Zeichen
  • convertedInvoiceIdsArray<string>Pflicht
    daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
    max. 128 Zeichen
  • projectIdstring | nullPflicht
    max. 128 Zeichen
  • decisionNotestring | nullPflicht
  • acceptedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • rejectedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • language"de" | "en"Pflicht
    Belegsprache (beim Festschreiben fixiert)
  • dispatchobjectPflicht
    • countintegerPflicht
      -9007199254740991–9007199254740991
    • lastChannel"email" | "post" | nullPflicht
    • lastSentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • lockedbooleanPflicht
  • lockedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/offers/ID/finalize' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Antwort 200
{
  "id": "string",
  "object": "offer",
  "type": "offer",
  "status": "draft",
  "number": "string",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "sender": {
    "companyName": "string",
    "ownerName": "string",
    "legalForm": "string",
    "managingDirectors": "string",
    "street": "string",
    "zipCode": "string",
    "city": "string",
    "countryCode": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "taxNumber": "string",
    "vatId": "string",
    "smallBusiness": false,
    "commercialRegister": {
      "court": "string",
      "number": "string"
    },
    "bank": {
      "accountHolder": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string"
    },
    "invoiceFooter": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "taxNotice": "string",
  "currency": "EUR",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "totals": {
    "netCents": 0,
    "taxCents": 0,
    "grossCents": 0,
    "groups": [
      {
        "taxRate": 0,
        "category": "string",
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0
      }
    ]
  },
  "relatedOfferId": "string",
  "orderConfirmationId": "string",
  "convertedInvoiceIds": [
    "string"
  ],
  "projectId": "string",
  "decisionNote": "string",
  "acceptedAt": "2026-11-01T09:30:00.000Z",
  "rejectedAt": "2026-11-01T09:30:00.000Z",
  "language": "de",
  "dispatch": {
    "count": 0,
    "lastChannel": "email",
    "lastSentAt": "2026-11-01T09:30:00.000Z"
  },
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/offers/{id}/pdf

Berechtigung: offers:read

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Antwort 200

Datei (application/pdf).

Mögliche Fehler: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/offers/ID/pdf' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
POST/api/v1/offers/{id}/reject

Berechtigung: offers:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · OfferDecision

  • notestring
    Notiz, z. B. Grund der Ablehnung
    max. 1000 Zeichen

Antwort 200 · Offer

  • idstringPflicht
    max. 128 Zeichen
  • object"offer"Pflicht
  • type"offer" | "order_confirmation"Pflicht
  • status"draft" | "sent" | "accepted" | "rejected" | "expired" | "converted"Pflicht
  • numberstring | nullPflicht
  • contactIdstring | nullPflicht
    max. 128 Zeichen
  • recipientDocumentRecipientPflicht
    • namestringPflicht
      Firma oder Name
      max. 160 Zeichen
    • additionstring
      Zusatz, z. B. z. Hd. Frau Muster
      max. 160 Zeichen
    • streetstringPflicht
      max. 160 Zeichen · Standard: ""
    • zipCodestringPflicht
      max. 10 Zeichen · Standard: ""
    • citystringPflicht
      max. 80 Zeichen · Standard: ""
    • countrystringPflicht
      Ländercode ISO 3166-1 alpha-2
      max. 2 Zeichen · Standard: "DE"
    • emailstring (email)
      Rechnungsempfänger (E-Mail)
      max. 254 Zeichen
    • vatIdstring
      USt-IdNr. des Empfängers (Pflicht bei Reverse Charge/ig. Lieferung)
    • leitwegIdstring
      Leitweg-ID (XRechnung an Behörden)
      max. 60 Zeichen
    • customerNumberstring
      Kundennummer (beim Festschreiben vergeben)
      max. 40 Zeichen
  • senderSenderSnapshot | nullPflicht
    • companyNamestringPflicht
    • ownerNamestring
    • legalFormstring
    • managingDirectorsstring
    • streetstringPflicht
    • zipCodestringPflicht
    • citystringPflicht
    • countryCodestringPflicht
    • phonestring
    • emailstring
    • websitestring
    • taxNumberstring
    • vatIdstring
    • smallBusinessbooleanPflicht
    • commercialRegisterobject
      • courtstring
      • numberstring
    • bankobject
      • accountHolderstring
      • ibanstring
      • bicstring
      • bankNamestring
    • invoiceFooterstring
  • issueDatestring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • validUntilstring (date) | nullPflicht
    Datum (YYYY-MM-DD)
  • priceMode"net" | "gross"Pflicht
  • taxTreatment"regular" | "small_business" | "reverse_charge" | "intra_eu_supply" | "export" | "non_taxable"Pflicht
    Steuerbehandlung des Belegs
  • taxNoticestring | nullPflicht
  • currency"EUR"Pflicht
  • subjectstringPflicht
  • introTextstringPflicht
  • closingTextstringPflicht
  • referencestringPflicht
  • linesArray<DocumentLine>Pflicht
    • idstring
      stabile Positions-ID (vom Server vergeben, wenn leer)
      max. 40 Zeichen
    • type"item" | "text" | "subtotal"
      Position, reine Textzeile oder Zwischensumme
      Standard: "item"
    • articleIdstring
      Bezug zum Artikelstamm
      max. 128 Zeichen
    • titlestringPflicht
      max. 300 Zeichen
    • descriptionstring
      max. 5000 Zeichen
    • quantitynumber
      -1000000–1000000 · Standard: 1
    • unitstring
      Einheit, z. B. Stk, Std, pauschal (UN/ECE Rec 20 für E-Rechnung: Modul)
      max. 20 Zeichen
    • unitPriceCentsinteger
      Betrag in Cent
      -100000000000–100000000000 · Standard: 0
    • discountPercentnumber
      0–100
    • taxRatenumber
      Steuersatz in Prozent (19, 7, 0 …)
      0–100 · Standard: 19
    • totalCentsinteger
      Betrag in Cent
      -100000000000–100000000000
    • servicePeriodobject
      • fromstring (date)Pflicht
        Datum (YYYY-MM-DD)
      • tostring (date)Pflicht
        Datum (YYYY-MM-DD)
    • projectIdstring
      max. 128 Zeichen
    • timeEntryIdsArray<string>
      max. 128 Zeichen
  • totalsDocumentTotalsPflicht
    • netCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • taxCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • grossCentsintegerPflicht
      Betrag in Cent
      -100000000000–100000000000
    • groupsArray<object>Pflicht
      • taxRatenumberPflicht
      • categorystringPflicht
      • netCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • taxCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
      • grossCentsintegerPflicht
        Betrag in Cent
        -100000000000–100000000000
  • relatedOfferIdstring | nullPflicht
    Auftragsbestätigung: zugrunde liegendes Angebot
    max. 128 Zeichen
  • orderConfirmationIdstring | nullPflicht
    max. 128 Zeichen
  • convertedInvoiceIdsArray<string>Pflicht
    daraus erzeugte Rechnungen (Abschlag/Schluss/Rechnung)
    max. 128 Zeichen
  • projectIdstring | nullPflicht
    max. 128 Zeichen
  • decisionNotestring | nullPflicht
  • acceptedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • rejectedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • language"de" | "en"Pflicht
    Belegsprache (beim Festschreiben fixiert)
  • dispatchobjectPflicht
    • countintegerPflicht
      -9007199254740991–9007199254740991
    • lastChannel"email" | "post" | nullPflicht
    • lastSentAtstring (date-time) | nullPflicht
      Zeitpunkt (ISO 8601)
  • lockedbooleanPflicht
  • lockedAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • updatedAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/offers/ID/reject' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "note": "string"
}'
Antwort 200
{
  "id": "string",
  "object": "offer",
  "type": "offer",
  "status": "draft",
  "number": "string",
  "contactId": "string",
  "recipient": {
    "name": "string",
    "addition": "string",
    "street": "",
    "zipCode": "",
    "city": "",
    "country": "DE",
    "email": "[email protected]",
    "vatId": "string",
    "leitwegId": "string",
    "customerNumber": "string"
  },
  "sender": {
    "companyName": "string",
    "ownerName": "string",
    "legalForm": "string",
    "managingDirectors": "string",
    "street": "string",
    "zipCode": "string",
    "city": "string",
    "countryCode": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "taxNumber": "string",
    "vatId": "string",
    "smallBusiness": false,
    "commercialRegister": {
      "court": "string",
      "number": "string"
    },
    "bank": {
      "accountHolder": "string",
      "iban": "string",
      "bic": "string",
      "bankName": "string"
    },
    "invoiceFooter": "string"
  },
  "issueDate": "2026-11-01",
  "validUntil": "2026-11-01",
  "priceMode": "net",
  "taxTreatment": "regular",
  "taxNotice": "string",
  "currency": "EUR",
  "subject": "string",
  "introText": "string",
  "closingText": "string",
  "reference": "string",
  "lines": [
    {
      "id": "string",
      "type": "item",
      "articleId": "string",
      "title": "string",
      "description": "string",
      "quantity": 1,
      "unit": "string",
      "unitPriceCents": 0,
      "discountPercent": 0,
      "taxRate": 19,
      "totalCents": 0,
      "servicePeriod": {
        "from": "2026-11-01",
        "to": "2026-11-01"
      },
      "projectId": "string",
      "timeEntryIds": [
        "string"
      ]
    }
  ],
  "totals": {
    "netCents": 0,
    "taxCents": 0,
    "grossCents": 0,
    "groups": [
      {
        "taxRate": 0,
        "category": "string",
        "netCents": 0,
        "taxCents": 0,
        "grossCents": 0
      }
    ]
  },
  "relatedOfferId": "string",
  "orderConfirmationId": "string",
  "convertedInvoiceIds": [
    "string"
  ],
  "projectId": "string",
  "decisionNote": "string",
  "acceptedAt": "2026-11-01T09:30:00.000Z",
  "rejectedAt": "2026-11-01T09:30:00.000Z",
  "language": "de",
  "dispatch": {
    "count": 0,
    "lastChannel": "email",
    "lastSentAt": "2026-11-01T09:30:00.000Z"
  },
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
POST/api/v1/offers/{id}/send

Wie /invoices/{id}/send. Platzhalter im E-Mail-Text zusätzlich {gueltig}.

Berechtigung: offers:write

Pfadparameter

  • idstringPflicht
    ID der Ressource
    max. 128 Zeichen

Header

  • Idempotency-Keystring
    Eindeutiger Schlüssel (8–255 Zeichen). Wiederholte Anfragen mit gleichem Schlüssel liefern 24 h lang dieselbe Antwort.
    max. 255 Zeichen

Body (JSON) · InvoiceSend

  • channel"email" | "post"Pflicht
  • toArray<string (email)>
    E-Mail: Empfänger; Standard Rechnungs-E-Mail des Kontakts
    max. 254 Zeichen
  • ccArray<string (email)>
    max. 254 Zeichen
  • copyToSelfboolean
    E-Mail: Kopie an die eigene Rechnungs-E-Mail
  • subjectstring
    max. 200 Zeichen
  • messagestring
    E-Mail-Text; Platzhalter {nummer} {betrag} {faellig} {kunde} {firma}
    max. 5000 Zeichen
  • registeredboolean
    Post: als Einschreiben
  • finalizeboolean
    Entwurf vor dem Versand festschreiben

Antwort 201 · InvoiceDispatch

  • idstringPflicht
    max. 128 Zeichen
  • invoiceIdstringPflicht
    max. 128 Zeichen
  • channel"email" | "post"Pflicht
  • status"sending" | "sent" | "failed"Pflicht
  • toArray<string>Pflicht
  • subjectstring | nullPflicht
  • registeredbooleanPflicht
  • letterIdstring | nullPflicht
  • trackingRefstring | nullPflicht
  • pageCountinteger | nullPflicht
    -9007199254740991–9007199254740991
  • priceEurostring | nullPflicht
  • errorstring | nullPflicht
  • actorActor | nullPflicht
    • type"user" | "api_key" | "oauth" | "system"Pflicht
    • idstringPflicht
    • labelstring
  • createdAtstring (date-time)Pflicht
    Zeitpunkt (ISO 8601)
  • sentAtstring (date-time) | nullPflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 401, 402, 403, 404, 409, 422, 429, 500, 502

curl -X POST 'https://www.debt-flow.io/api/v1/offers/ID/send' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "channel": "email",
  "to": [
    "[email protected]"
  ],
  "cc": [
    "[email protected]"
  ],
  "copyToSelf": false,
  "subject": "string",
  "message": "string",
  "registered": false,
  "finalize": false
}'
Antwort 201
{
  "id": "string",
  "invoiceId": "string",
  "channel": "email",
  "status": "sending",
  "to": [
    "string"
  ],
  "subject": "string",
  "registered": false,
  "letterId": "string",
  "trackingRef": "string",
  "pageCount": 0,
  "priceEuro": "string",
  "error": "string",
  "actor": {
    "type": "user",
    "id": "string",
    "label": "string"
  },
  "createdAt": "2026-11-01T09:30:00.000Z",
  "sentAt": "2026-11-01T09:30:00.000Z"
}