Zum Inhalt springen

Accounting

Charts of accounts SKR03/SKR04, journal, manual journal entries and period locks (GoBD, German bookkeeping rules).
GET/api/v1/account-mappings

Versioned account mapping (individual chart of accounts based on SKR03/SKR04): per version, different account numbers for standard accounts and custom accounts. Journal entries use the version in force on the booking date.

Permission: accounting:read

Query parameters

  • limitinteger
    Number of entries (1–100)
    1–100 · Default: 25
  • cursorstring
    `nextCursor` of the previous page
    max. 500 characters

Response 200

  • object"list"required
  • dataArray<AccountMappingVersion>required
    • idstringrequired
      v<version>
    • versionintegerrequired
      -9007199254740991–9007199254740991
    • chart"skr03" | "skr04"required
    • validFromstring (date)required
      applies to journal entries from this date
    • assignmentsobjectrequired
      standard key → different account number
    • customAccountsArray<object>required
      • numberstringrequired
      • namestringrequired
        max. 60 characters
      • typeenumrequired
        Values: asset, liability, equity, private, revenue, expense, tax
      • basedOnstring | null
        standard account (key) whose automatic behaviour and form fields are adopted
      • euerstring | null
        EÜR form field (overrides the template)
      • ustvastring | null
        advance VAT return form field (overrides the template)
    • notestring | null
  • hasMorebooleanrequired
  • nextCursorstring | nullrequired

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/account-mappings' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "version": 0,
      "chart": "skr03",
      "validFrom": "2026-11-01",
      "assignments": {},
      "customAccounts": [
        {
          "number": "string",
          "name": "string",
          "type": "asset",
          "basedOn": "string",
          "euer": "string",
          "ustva": "string"
        }
      ],
      "note": "string"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/account-mappings

Appends a new version (versions are never changed). validFrom must be after the locked period and after the last version. General ledger accounts have 4 digits (account length 4 in the DATEV export); personal accounts (10000–99999) are excluded. Error: 409 account_mapping_invalid.

Permission: accounting:write

Headers

  • Idempotency-Keystring
    Unique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.
    max. 255 characters

Body (JSON) · AccountMappingVersionCreate

  • validFromstring (date)required
    first booking day the mapping applies to (after the locked period)
  • assignmentsobject
    Default: {}
  • customAccountsArray<object>
    • numberstringrequired
    • namestringrequired
      max. 60 characters
    • typeenumrequired
      Values: asset, liability, equity, private, revenue, expense, tax
    • basedOnstring | null
      standard account (key) whose automatic behaviour and form fields are adopted
    • euerstring | null
      EÜR form field (overrides the template)
    • ustvastring | null
      advance VAT return form field (overrides the template)
  • notestring | null
    max. 500 characters

Response 201 · AccountMappingVersion

  • idstringrequired
    v<version>
  • versionintegerrequired
    -9007199254740991–9007199254740991
  • chart"skr03" | "skr04"required
  • validFromstring (date)required
    applies to journal entries from this date
  • assignmentsobjectrequired
    standard key → different account number
  • customAccountsArray<object>required
    • numberstringrequired
    • namestringrequired
      max. 60 characters
    • typeenumrequired
      Values: asset, liability, equity, private, revenue, expense, tax
    • basedOnstring | null
      standard account (key) whose automatic behaviour and form fields are adopted
    • euerstring | null
      EÜR form field (overrides the template)
    • ustvastring | null
      advance VAT return form field (overrides the template)
  • notestring | null

Possible errors: 400, 401, 403, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/account-mappings' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "validFrom": "2026-11-01",
  "assignments": {},
  "customAccounts": [],
  "note": "string"
}'
Response 201
{
  "id": "string",
  "version": 0,
  "chart": "skr03",
  "validFrom": "2026-11-01",
  "assignments": {},
  "customAccounts": [
    {
      "number": "string",
      "name": "string",
      "type": "asset",
      "basedOn": "string",
      "euer": "string",
      "ustva": "string"
    }
  ],
  "note": "string"
}
GET/api/v1/accounting-settings

Chart of accounts (SKR03/SKR04), VAT accounting method (accrual/cash, Soll-/Ist-Versteuerung), advance VAT return period, DATEV consultant/client number and period lock status.

Permission: accounting:read

Response 200 · AccountingSettings

  • chart"skr03" | "skr04"required
    Chart of accounts
  • taxationMethod"soll" | "ist"required
    VAT accounting method currently in force: soll = VAT at the time of supply, ist = VAT on payment (§ 20 UStG)
  • taxRegimeArray<object>required
    History of the VAT accounting method with effective date (validFrom 0000-01-01 = initial method)
    • method"soll" | "ist"required
    • validFromstringrequired
    • permitRefstring | nullrequired
  • vatPeriod"monthly" | "quarterly" | "yearly" | "none"required
    Advance return period
  • permanentExtensionbooleanrequired
    Permanent filing extension (Dauerfristverlängerung)
  • specialPrepaymentCentsintegerrequired
    Assessed special advance payment (Sondervorauszahlung, box 39; deducted in the last advance VAT return of the year)
    0–100000000000
  • fiscalYearStartMonthintegerrequired
    Start of the financial year (month)
    1–12
  • personalAccountsbooleanrequired
    Keep debtors/creditors as personal accounts (accrual VAT accounting only)
  • datevobjectrequired
    • consultantNumberstringrequired
      DATEV consultant number
    • clientNumberstringrequired
      DATEV client number
  • bankLedgerobjectrequired
    General ledger account per bank account (ID → account number)
  • vehiclesArray<VehicleUse>required
    Private use of company cars (1% rule), booked monthly as a withdrawal
    • idstringrequired
    • namestringrequired
      Name, e.g. licence plate
      max. 80 characters
    • method"one_percent"required
      Flat-rate method (1% rule); please book a logbook manually
    • listPriceCentsintegerrequired
      Domestic gross list price at first registration incl. optional extras
      0–100000000000
    • drive"combustion" | "hybrid" | "electric"required
      combustion = combustion engine, hybrid = plug-in hybrid, electric = fully electric vehicle
    • factorPercent1 | 0.5 | 0.25required
      Percentage per month (electric/hybrid: 0.5 or 0.25 under § 6 (1) No. 4 sentence 2 EStG)
    • acquisitionDatestring (date)required
      Acquisition or provision
    • fromstring (date)required
      Start of private use (month)
    • tostring (date) | nullrequired
      End of private use (month, inclusive)
    • vatOnPrivateUsebooleanrequired
      Input VAT deducted for the vehicle → VAT on private use (80% of the 1% value)
  • closedThroughstring (date) | nullrequired
    Journal entries up to and including this date are locked
  • smallBusinessbooleanrequired
    Small business under § 19 UStG (from Company & Invoice settings)
  • chartLockedbooleanrequired
    Chart of accounts can no longer be changed (journal entries exist)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/accounting-settings' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "chart": "skr03",
  "taxationMethod": "soll",
  "taxRegime": [
    {
      "method": "soll",
      "validFrom": "string",
      "permitRef": "string"
    }
  ],
  "vatPeriod": "monthly",
  "permanentExtension": false,
  "specialPrepaymentCents": 0,
  "fiscalYearStartMonth": 1,
  "personalAccounts": false,
  "datev": {
    "consultantNumber": "string",
    "clientNumber": "string"
  },
  "bankLedger": {},
  "vehicles": [
    {
      "id": "string",
      "name": "string",
      "method": "one_percent",
      "listPriceCents": 0,
      "drive": "combustion",
      "factorPercent": 1,
      "acquisitionDate": "2026-11-01",
      "from": "2026-11-01",
      "to": "2026-11-01",
      "vatOnPrivateUse": false
    }
  ],
  "closedThrough": "2026-11-01",
  "smallBusiness": false,
  "chartLocked": false,
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/accounting-settings

Only the fields you pass are changed. The chart of accounts can no longer be changed once the first journal entries (manual or finalised) have been saved (409 chart_locked). A change of VAT accounting method only affects periods that have not yet been locked.

Permission: accounting:write

Body (JSON) · AccountingSettingsUpdate

  • chart"skr03" | "skr04"
  • taxationMethod"soll" | "ist"
    Only during initial setup (no saved journal entries yet); otherwise taxationMethodChange
  • taxationMethodChangeobject
    Change of VAT accounting method with effective date (ST-18)
    • method"soll" | "ist"required
    • validFromstring (date)required
      First day of an advance VAT return period, not retroactive
    • permitRefstring | null
      Permission from the tax office (required for cash accounting, § 20 UStG)
      max. 200 characters
  • vatPeriod"monthly" | "quarterly" | "yearly" | "none"
  • permanentExtensionboolean
  • specialPrepaymentCentsinteger
    Amount in cents
    0–100000000000
  • fiscalYearStartMonthinteger
    1–12
  • personalAccountsboolean
  • datevobject
    • consultantNumberstring
    • clientNumberstring
  • bankLedgerobject
  • vehiclesArray<VehicleUse>
    Complete list; locked months must not change (409 period_closed)
    • idstringrequired
    • namestringrequired
      Name, e.g. licence plate
      max. 80 characters
    • method"one_percent"required
      Flat-rate method (1% rule); please book a logbook manually
    • listPriceCentsintegerrequired
      Domestic gross list price at first registration incl. optional extras
      0–100000000000
    • drive"combustion" | "hybrid" | "electric"required
      combustion = combustion engine, hybrid = plug-in hybrid, electric = fully electric vehicle
    • factorPercent1 | 0.5 | 0.25required
      Percentage per month (electric/hybrid: 0.5 or 0.25 under § 6 (1) No. 4 sentence 2 EStG)
    • acquisitionDatestring (date)required
      Acquisition or provision
    • fromstring (date)required
      Start of private use (month)
    • tostring (date) | nullrequired
      End of private use (month, inclusive)
    • vatOnPrivateUsebooleanrequired
      Input VAT deducted for the vehicle → VAT on private use (80% of the 1% value)

Response 200 · AccountingSettings

  • chart"skr03" | "skr04"required
    Chart of accounts
  • taxationMethod"soll" | "ist"required
    VAT accounting method currently in force: soll = VAT at the time of supply, ist = VAT on payment (§ 20 UStG)
  • taxRegimeArray<object>required
    History of the VAT accounting method with effective date (validFrom 0000-01-01 = initial method)
    • method"soll" | "ist"required
    • validFromstringrequired
    • permitRefstring | nullrequired
  • vatPeriod"monthly" | "quarterly" | "yearly" | "none"required
    Advance return period
  • permanentExtensionbooleanrequired
    Permanent filing extension (Dauerfristverlängerung)
  • specialPrepaymentCentsintegerrequired
    Assessed special advance payment (Sondervorauszahlung, box 39; deducted in the last advance VAT return of the year)
    0–100000000000
  • fiscalYearStartMonthintegerrequired
    Start of the financial year (month)
    1–12
  • personalAccountsbooleanrequired
    Keep debtors/creditors as personal accounts (accrual VAT accounting only)
  • datevobjectrequired
    • consultantNumberstringrequired
      DATEV consultant number
    • clientNumberstringrequired
      DATEV client number
  • bankLedgerobjectrequired
    General ledger account per bank account (ID → account number)
  • vehiclesArray<VehicleUse>required
    Private use of company cars (1% rule), booked monthly as a withdrawal
    • idstringrequired
    • namestringrequired
      Name, e.g. licence plate
      max. 80 characters
    • method"one_percent"required
      Flat-rate method (1% rule); please book a logbook manually
    • listPriceCentsintegerrequired
      Domestic gross list price at first registration incl. optional extras
      0–100000000000
    • drive"combustion" | "hybrid" | "electric"required
      combustion = combustion engine, hybrid = plug-in hybrid, electric = fully electric vehicle
    • factorPercent1 | 0.5 | 0.25required
      Percentage per month (electric/hybrid: 0.5 or 0.25 under § 6 (1) No. 4 sentence 2 EStG)
    • acquisitionDatestring (date)required
      Acquisition or provision
    • fromstring (date)required
      Start of private use (month)
    • tostring (date) | nullrequired
      End of private use (month, inclusive)
    • vatOnPrivateUsebooleanrequired
      Input VAT deducted for the vehicle → VAT on private use (80% of the 1% value)
  • closedThroughstring (date) | nullrequired
    Journal entries up to and including this date are locked
  • smallBusinessbooleanrequired
    Small business under § 19 UStG (from Company & Invoice settings)
  • chartLockedbooleanrequired
    Chart of accounts can no longer be changed (journal entries exist)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 409, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/accounting-settings' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "chart": "skr03",
  "taxationMethod": "soll",
  "taxationMethodChange": {
    "method": "soll",
    "validFrom": "2026-11-01",
    "permitRef": "string"
  },
  "vatPeriod": "monthly",
  "permanentExtension": false,
  "specialPrepaymentCents": 0,
  "fiscalYearStartMonth": 1,
  "personalAccounts": false,
  "datev": {
    "consultantNumber": "string",
    "clientNumber": "string"
  },
  "bankLedger": {},
  "vehicles": [
    {
      "id": "string",
      "name": "string",
      "method": "one_percent",
      "listPriceCents": 0,
      "drive": "combustion",
      "factorPercent": 1,
      "acquisitionDate": "2026-11-01",
      "from": "2026-11-01",
      "to": "2026-11-01",
      "vatOnPrivateUse": false
    }
  ]
}'
Response 200
{
  "chart": "skr03",
  "taxationMethod": "soll",
  "taxRegime": [
    {
      "method": "soll",
      "validFrom": "string",
      "permitRef": "string"
    }
  ],
  "vatPeriod": "monthly",
  "permanentExtension": false,
  "specialPrepaymentCents": 0,
  "fiscalYearStartMonth": 1,
  "personalAccounts": false,
  "datev": {
    "consultantNumber": "string",
    "clientNumber": "string"
  },
  "bankLedger": {},
  "vehicles": [
    {
      "id": "string",
      "name": "string",
      "method": "one_percent",
      "listPriceCents": 0,
      "drive": "combustion",
      "factorPercent": 1,
      "acquisitionDate": "2026-11-01",
      "from": "2026-11-01",
      "to": "2026-11-01",
      "vatOnPrivateUse": false
    }
  ],
  "closedThrough": "2026-11-01",
  "smallBusiness": false,
  "chartLocked": false,
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/accounts

General ledger accounts of the configured chart of accounts (SKR03 or SKR04) with their cash-basis income statement (EÜR) and advance VAT return mapping. key is independent of the chart of accounts and can be used as a category on receipts. Personal accounts (debtor accounts 10000–69999, creditor accounts 70000–99999) are assigned automatically by DebtFlow.

Permission: accounting:read

Query parameters

  • typeenum
    Values: asset, liability, equity, private, revenue, expense, tax
  • category"true" | "false"
    categories only (true)
  • limitinteger
    Number of entries (1–100)
    1–100 · Default: 25
  • cursorstring
    `nextCursor` of the previous page
    max. 500 characters

Response 200

  • object"list"required
  • dataArray<LedgerAccount>required
    • numberstringrequired
    • keystringrequired
      Stable key, independent of the chart of accounts
    • namestringrequired
    • typeenumrequired
      Values: asset, liability, equity, private, revenue, expense, tax
    • groupenumrequired
      Values: assets, money, receivables, private, revenue, goods, staff, rooms, insurance, vehicle, travel, office, advice, depreciation, finance, tax
    • groupLabelstringrequired
    • autoTaxobject | nullrequired
      DATEV automatic account (Automatikkonto) with this tax
      • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige"required
      • ratenumberrequired
    • defaultTaxobject | nullrequired
      Suggested tax for entries posted to this account
      • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige"required
      • ratenumberrequired
    • euerstring | nullrequired
      EÜR line (Kennzahl) (tax accounts: debit/credit separately, e.g. "186/141")
    • ustvastring | nullrequired
      Advance VAT return box without tax code
    • categorybooleanrequired
      intended as a category for receipts and account assignment
  • hasMorebooleanrequired
  • nextCursorstring | nullrequired

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/accounts' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "object": "list",
  "data": [
    {
      "number": "string",
      "key": "string",
      "name": "string",
      "type": "asset",
      "group": "assets",
      "groupLabel": "string",
      "autoTax": {
        "taxKey": "output",
        "rate": 0
      },
      "defaultTax": {
        "taxKey": "output",
        "rate": 0
      },
      "euer": "string",
      "ustva": "string",
      "category": false
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
GET/api/v1/fixed-assets

Fixed assets with depreciation schedule, book value and accounts. Straight-line depreciation, pool items, low-value assets and immediate expensing; the depreciation appears as derived journal entries (source.type = fixed_asset) in the journal, the EÜR and the DATEV export.

Permission: accounting:read

Query parameters

  • limitinteger
    Number of entries (1–100)
    1–100 · Default: 25
  • cursorstring
    `nextCursor` of the previous page
    max. 500 characters

Response 200

  • object"list"required
  • dataArray<FixedAsset>required
    • idstringrequired
    • namestringrequired
    • inventoryNumberstring | nullrequired
    • assetClass"software" | "vehicle" | "office" | "equipment"required
    • method"linear" | "pool" | "gwg" | "immediate"required
    • acquisitionDatestring (date)required
      Date (YYYY-MM-DD)
    • costCentsintegerrequired
      Acquisition cost without deductible input VAT (small businesses: gross)
      -100000000000–100000000000
    • usefulLifeMonthsinteger | nullrequired
      -9007199254740991–9007199254740991
    • receiptIdstring | nullrequired
      Purchase receipt – booked to the asset account
    • disposalDatestring (date) | nullrequired
      Date (YYYY-MM-DD)
    • notestring | nullrequired
    • accountsobjectrequired
      Asset account and depreciation expense account
      • assetstringrequired
      • depreciationstringrequired
    • bookValueCentsintegerrequired
      Book value at the end of the current year
      -100000000000–100000000000
    • scheduleArray<object>required
      • yearintegerrequired
        -9007199254740991–9007199254740991
      • openingCentsintegerrequired
        Amount in cents
        -100000000000–100000000000
      • additionCentsintegerrequired
        Amount in cents
        -100000000000–100000000000
      • depreciationCentsintegerrequired
        Amount in cents
        -100000000000–100000000000
      • disposalCentsintegerrequired
        Amount in cents
        -100000000000–100000000000
      • closingCentsintegerrequired
        Amount in cents
        -100000000000–100000000000
      • monthsinteger | nullrequired
        -9007199254740991–9007199254740991
    • createdAtstring (date-time) | nullrequired
      Timestamp (ISO 8601)
    • updatedAtstring (date-time) | nullrequired
      Timestamp (ISO 8601)
  • hasMorebooleanrequired
  • nextCursorstring | nullrequired

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/fixed-assets' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "name": "string",
      "inventoryNumber": "string",
      "assetClass": "software",
      "method": "linear",
      "acquisitionDate": "2026-11-01",
      "costCents": 0,
      "usefulLifeMonths": 0,
      "receiptId": "string",
      "disposalDate": "2026-11-01",
      "note": "string",
      "accounts": {
        "asset": "string",
        "depreciation": "string"
      },
      "bookValueCents": 0,
      "schedule": [
        {
          "year": 0,
          "openingCents": 0,
          "additionCents": 0,
          "depreciationCents": 0,
          "disposalCents": 0,
          "closingCents": 0,
          "months": null
        }
      ],
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/fixed-assets

Records a fixed asset. Without method, DebtFlow suggests the method based on the acquisition cost (up to €250 immediate expense, up to €800 low-value asset, above that straight-line); without a useful life, a suggestion per class applies. With receiptId, the purchase receipt is booked to the asset account. Acquisitions in the locked period are rejected (409 fixed_asset_invalid).

Permission: accounting:write

Headers

  • Idempotency-Keystring
    Unique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.
    max. 255 characters

Body (JSON) · FixedAssetCreate

  • namestringrequired
    max. 120 characters
  • inventoryNumberstring | null
    max. 40 characters
  • assetClass"software" | "vehicle" | "office" | "equipment"required
  • method"linear" | "pool" | "gwg" | "immediate"
    empty = suggestion based on acquisition cost (low-value asset/pool/straight-line)
  • acquisitionDatestring (date)required
    Date (YYYY-MM-DD)
  • costCentsintegerrequired
    Amount in cents
    0–100000000000
  • usefulLifeMonthsinteger | null
    empty = suggestion per asset class (please check)
    1–600
  • receiptIdstring | null
    max. 128 characters
  • disposalDatestring (date) | null
    Date (YYYY-MM-DD)
  • notestring | null
    max. 500 characters

Response 201 · FixedAsset

  • idstringrequired
  • namestringrequired
  • inventoryNumberstring | nullrequired
  • assetClass"software" | "vehicle" | "office" | "equipment"required
  • method"linear" | "pool" | "gwg" | "immediate"required
  • acquisitionDatestring (date)required
    Date (YYYY-MM-DD)
  • costCentsintegerrequired
    Acquisition cost without deductible input VAT (small businesses: gross)
    -100000000000–100000000000
  • usefulLifeMonthsinteger | nullrequired
    -9007199254740991–9007199254740991
  • receiptIdstring | nullrequired
    Purchase receipt – booked to the asset account
  • disposalDatestring (date) | nullrequired
    Date (YYYY-MM-DD)
  • notestring | nullrequired
  • accountsobjectrequired
    Asset account and depreciation expense account
    • assetstringrequired
    • depreciationstringrequired
  • bookValueCentsintegerrequired
    Book value at the end of the current year
    -100000000000–100000000000
  • scheduleArray<object>required
    • yearintegerrequired
      -9007199254740991–9007199254740991
    • openingCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • additionCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • depreciationCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • disposalCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • closingCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • monthsinteger | nullrequired
      -9007199254740991–9007199254740991
  • createdAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/fixed-assets' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "inventoryNumber": "string",
  "assetClass": "software",
  "method": "linear",
  "acquisitionDate": "2026-11-01",
  "costCents": 0,
  "usefulLifeMonths": 1,
  "receiptId": "string",
  "disposalDate": "2026-11-01",
  "note": "string"
}'
Response 201
{
  "id": "string",
  "name": "string",
  "inventoryNumber": "string",
  "assetClass": "software",
  "method": "linear",
  "acquisitionDate": "2026-11-01",
  "costCents": 0,
  "usefulLifeMonths": 0,
  "receiptId": "string",
  "disposalDate": "2026-11-01",
  "note": "string",
  "accounts": {
    "asset": "string",
    "depreciation": "string"
  },
  "bookValueCents": 0,
  "schedule": [
    {
      "year": 0,
      "openingCents": 0,
      "additionCents": 0,
      "depreciationCents": 0,
      "disposalCents": 0,
      "closingCents": 0,
      "months": 0
    }
  ],
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/fixed-assets/{id}

Permission: accounting:read

Path parameters

  • idstringrequired
    Resource ID
    max. 128 characters

Response 200 · FixedAsset

  • idstringrequired
  • namestringrequired
  • inventoryNumberstring | nullrequired
  • assetClass"software" | "vehicle" | "office" | "equipment"required
  • method"linear" | "pool" | "gwg" | "immediate"required
  • acquisitionDatestring (date)required
    Date (YYYY-MM-DD)
  • costCentsintegerrequired
    Acquisition cost without deductible input VAT (small businesses: gross)
    -100000000000–100000000000
  • usefulLifeMonthsinteger | nullrequired
    -9007199254740991–9007199254740991
  • receiptIdstring | nullrequired
    Purchase receipt – booked to the asset account
  • disposalDatestring (date) | nullrequired
    Date (YYYY-MM-DD)
  • notestring | nullrequired
  • accountsobjectrequired
    Asset account and depreciation expense account
    • assetstringrequired
    • depreciationstringrequired
  • bookValueCentsintegerrequired
    Book value at the end of the current year
    -100000000000–100000000000
  • scheduleArray<object>required
    • yearintegerrequired
      -9007199254740991–9007199254740991
    • openingCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • additionCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • depreciationCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • disposalCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • closingCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • monthsinteger | nullrequired
      -9007199254740991–9007199254740991
  • createdAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/fixed-assets/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "id": "string",
  "name": "string",
  "inventoryNumber": "string",
  "assetClass": "software",
  "method": "linear",
  "acquisitionDate": "2026-11-01",
  "costCents": 0,
  "usefulLifeMonths": 0,
  "receiptId": "string",
  "disposalDate": "2026-11-01",
  "note": "string",
  "accounts": {
    "asset": "string",
    "depreciation": "string"
  },
  "bookValueCents": 0,
  "schedule": [
    {
      "year": 0,
      "openingCents": 0,
      "additionCents": 0,
      "depreciationCents": 0,
      "disposalCents": 0,
      "closingCents": 0,
      "months": 0
    }
  ],
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/fixed-assets/{id}

Changes a fixed asset. Acquisition data and depreciation are locked as soon as the acquisition falls in the locked period; a disposal (disposalDate) is possible in the open period and books the remaining book value (Anlage EÜR field 135).

Permission: accounting:write

Path parameters

  • idstringrequired
    Resource ID
    max. 128 characters

Body (JSON) · FixedAssetUpdate

  • namestring
    max. 120 characters
  • inventoryNumberstring | null
    max. 40 characters
  • assetClass"software" | "vehicle" | "office" | "equipment"
  • method"linear" | "pool" | "gwg" | "immediate"
    empty = suggestion based on acquisition cost (low-value asset/pool/straight-line)
  • acquisitionDatestring (date)
    Date (YYYY-MM-DD)
  • costCentsinteger
    Amount in cents
    0–100000000000
  • usefulLifeMonthsinteger | null
    empty = suggestion per asset class (please check)
    1–600
  • receiptIdstring | null
    max. 128 characters
  • disposalDatestring (date) | null
    Date (YYYY-MM-DD)
  • notestring | null
    max. 500 characters

Response 200 · FixedAsset

  • idstringrequired
  • namestringrequired
  • inventoryNumberstring | nullrequired
  • assetClass"software" | "vehicle" | "office" | "equipment"required
  • method"linear" | "pool" | "gwg" | "immediate"required
  • acquisitionDatestring (date)required
    Date (YYYY-MM-DD)
  • costCentsintegerrequired
    Acquisition cost without deductible input VAT (small businesses: gross)
    -100000000000–100000000000
  • usefulLifeMonthsinteger | nullrequired
    -9007199254740991–9007199254740991
  • receiptIdstring | nullrequired
    Purchase receipt – booked to the asset account
  • disposalDatestring (date) | nullrequired
    Date (YYYY-MM-DD)
  • notestring | nullrequired
  • accountsobjectrequired
    Asset account and depreciation expense account
    • assetstringrequired
    • depreciationstringrequired
  • bookValueCentsintegerrequired
    Book value at the end of the current year
    -100000000000–100000000000
  • scheduleArray<object>required
    • yearintegerrequired
      -9007199254740991–9007199254740991
    • openingCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • additionCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • depreciationCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • disposalCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • closingCentsintegerrequired
      Amount in cents
      -100000000000–100000000000
    • monthsinteger | nullrequired
      -9007199254740991–9007199254740991
  • createdAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 404, 409, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/fixed-assets/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "inventoryNumber": "string",
  "assetClass": "software",
  "method": "linear",
  "acquisitionDate": "2026-11-01",
  "costCents": 0,
  "usefulLifeMonths": 1,
  "receiptId": "string",
  "disposalDate": "2026-11-01",
  "note": "string"
}'
Response 200
{
  "id": "string",
  "name": "string",
  "inventoryNumber": "string",
  "assetClass": "software",
  "method": "linear",
  "acquisitionDate": "2026-11-01",
  "costCents": 0,
  "usefulLifeMonths": 0,
  "receiptId": "string",
  "disposalDate": "2026-11-01",
  "note": "string",
  "accounts": {
    "asset": "string",
    "depreciation": "string"
  },
  "bookValueCents": 0,
  "schedule": [
    {
      "year": 0,
      "openingCents": 0,
      "additionCents": 0,
      "depreciationCents": 0,
      "disposalCents": 0,
      "closingCents": 0,
      "months": 0
    }
  ],
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
DELETE/api/v1/fixed-assets/{id}

Only while the acquisition is not in the locked period; otherwise record a disposal.

Permission: accounting:write

Path parameters

  • idstringrequired
    Resource ID
    max. 128 characters

Response 204

Success, no content

Possible errors: 400, 401, 403, 404, 409, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/fixed-assets/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
GET/api/v1/journal-entries

All journal entries for a period (default: current year), newest first. Includes entries derived automatically from invoices, payments, receipts and bank transactions (depending on the VAT accounting method), manual entries and finalised entries with a sequential number.

Permission: accounting:read

Query parameters

  • fromstring (date)
    Date (YYYY-MM-DD)
  • tostring (date)
    Date (YYYY-MM-DD)
  • sourceenum
    Values: invoice, invoice_payment, receipt, receipt_payment, bank_transaction, client_funds, manual, fixed_asset, private_use
  • accountstring
    only entries on this account
  • limitinteger
    Number of entries (1–100)
    1–100 · Default: 25
  • cursorstring
    `nextCursor` of the previous page
    max. 500 characters

Response 200

  • object"list"required
  • dataArray<JournalEntry>required
    • idstringrequired
    • numberinteger | nullrequired
      Sequential journal entry number (assigned on finalisation)
      -9007199254740991–9007199254740991
    • datestring (date)required
      Date (YYYY-MM-DD)
    • descriptionstringrequired
    • documentNumberstringrequired
    • sourceobjectrequired
      • typeenumrequired
        Values: invoice, invoice_payment, receipt, receipt_payment, bank_transaction, client_funds, manual, fixed_asset, private_use
      • idstringrequired
    • contactobject | nullrequired
      • namestringrequired
      • accountstring | nullrequired
    • postingsArray<Posting>required
      • debitstringrequired
        Debit account
      • creditstringrequired
        Credit account
      • amountCentsintegerrequired
        Gross amount in cents (> 0)
        -100000000000–100000000000
      • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige" | nullrequired
        Tax type
      • taxRatenumber | nullrequired
      • taxCentsintegerrequired
        Tax amount in cents
        -100000000000–100000000000
      • taxSide"debit" | "credit" | nullrequired
        Account from which the tax is split off (revenue/expense account)
      • debitLabelstring
      • creditLabelstring
    • generatedbooleanrequired
      derived automatically from invoices, payments, receipts
    • lockedbooleanrequired
      finalised (GoBD)
    • lockedAtstring (date-time) | nullrequired
      Timestamp (ISO 8601)
    • hasAttachmentbooleanrequired
    • createdAtstring (date-time) | nullrequired
      Timestamp (ISO 8601)
    • updatedAtstring (date-time) | nullrequired
      Timestamp (ISO 8601)
  • hasMorebooleanrequired
  • nextCursorstring | nullrequired

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/journal-entries' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "number": 0,
      "date": "2026-11-01",
      "description": "string",
      "documentNumber": "string",
      "source": {
        "type": "invoice",
        "id": "string"
      },
      "contact": {
        "name": "string",
        "account": "string"
      },
      "postings": [
        {
          "debit": null,
          "credit": null,
          "amountCents": null,
          "taxKey": null,
          "taxRate": null,
          "taxCents": null,
          "taxSide": null,
          "debitLabel": null,
          "creditLabel": null
        }
      ],
      "generated": false,
      "locked": false,
      "lockedAt": "2026-11-01T09:30:00.000Z",
      "hasAttachment": false,
      "createdAt": "2026-11-01T09:30:00.000Z",
      "updatedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/journal-entries

Posts a journal entry (e.g. private withdrawal, depreciation, reclassification) or assigns accounts to a bank transaction (bankTransactionId). Amounts are gross; with a tax code, the tax is calculated from the gross amount and the rate if taxCents is missing. Only in periods that are not locked.

Permission: accounting:write

Headers

  • Idempotency-Keystring
    Unique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.
    max. 255 characters

Body (JSON) · JournalEntryCreate

  • datestring (date)required
    Date (YYYY-MM-DD)
  • descriptionstringrequired
    max. 60 characters
  • documentNumberstring
    max. 36 characters · Default: ""
  • postingsArray<object>required
    • debitstringrequired
    • creditstringrequired
    • amountCentsintegerrequired
      Gross amount in cents
      1–100000000000
    • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige" | null
    • taxRatenumber | null
      0–100
    • taxSide"debit" | "credit" | null
    • taxCentsinteger
      empty = calculated from gross amount and tax rate
      0–9007199254740991
  • bankTransactionIdstring
    Account assignment of a bank transaction
    max. 128 characters

Response 201 · JournalEntry

  • idstringrequired
  • numberinteger | nullrequired
    Sequential journal entry number (assigned on finalisation)
    -9007199254740991–9007199254740991
  • datestring (date)required
    Date (YYYY-MM-DD)
  • descriptionstringrequired
  • documentNumberstringrequired
  • sourceobjectrequired
    • typeenumrequired
      Values: invoice, invoice_payment, receipt, receipt_payment, bank_transaction, client_funds, manual, fixed_asset, private_use
    • idstringrequired
  • contactobject | nullrequired
    • namestringrequired
    • accountstring | nullrequired
  • postingsArray<Posting>required
    • debitstringrequired
      Debit account
    • creditstringrequired
      Credit account
    • amountCentsintegerrequired
      Gross amount in cents (> 0)
      -100000000000–100000000000
    • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige" | nullrequired
      Tax type
    • taxRatenumber | nullrequired
    • taxCentsintegerrequired
      Tax amount in cents
      -100000000000–100000000000
    • taxSide"debit" | "credit" | nullrequired
      Account from which the tax is split off (revenue/expense account)
    • debitLabelstring
    • creditLabelstring
  • generatedbooleanrequired
    derived automatically from invoices, payments, receipts
  • lockedbooleanrequired
    finalised (GoBD)
  • lockedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • hasAttachmentbooleanrequired
  • createdAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/journal-entries' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "date": "2026-11-01",
  "description": "string",
  "documentNumber": "",
  "postings": [
    {
      "debit": "string",
      "credit": "string",
      "amountCents": 1,
      "taxKey": null,
      "taxRate": null,
      "taxSide": null,
      "taxCents": 0
    }
  ],
  "bankTransactionId": "string"
}'
Response 201
{
  "id": "string",
  "number": 0,
  "date": "2026-11-01",
  "description": "string",
  "documentNumber": "string",
  "source": {
    "type": "invoice",
    "id": "string"
  },
  "contact": {
    "name": "string",
    "account": "string"
  },
  "postings": [
    {
      "debit": "string",
      "credit": "string",
      "amountCents": 0,
      "taxKey": "output",
      "taxRate": 0,
      "taxCents": 0,
      "taxSide": "debit",
      "debitLabel": "string",
      "creditLabel": "string"
    }
  ],
  "generated": false,
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "hasAttachment": false,
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/journal-entries/{id}

Permission: accounting:read

Path parameters

  • idstringrequired
    Resource ID
    max. 128 characters

Response 200 · JournalEntry

  • idstringrequired
  • numberinteger | nullrequired
    Sequential journal entry number (assigned on finalisation)
    -9007199254740991–9007199254740991
  • datestring (date)required
    Date (YYYY-MM-DD)
  • descriptionstringrequired
  • documentNumberstringrequired
  • sourceobjectrequired
    • typeenumrequired
      Values: invoice, invoice_payment, receipt, receipt_payment, bank_transaction, client_funds, manual, fixed_asset, private_use
    • idstringrequired
  • contactobject | nullrequired
    • namestringrequired
    • accountstring | nullrequired
  • postingsArray<Posting>required
    • debitstringrequired
      Debit account
    • creditstringrequired
      Credit account
    • amountCentsintegerrequired
      Gross amount in cents (> 0)
      -100000000000–100000000000
    • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige" | nullrequired
      Tax type
    • taxRatenumber | nullrequired
    • taxCentsintegerrequired
      Tax amount in cents
      -100000000000–100000000000
    • taxSide"debit" | "credit" | nullrequired
      Account from which the tax is split off (revenue/expense account)
    • debitLabelstring
    • creditLabelstring
  • generatedbooleanrequired
    derived automatically from invoices, payments, receipts
  • lockedbooleanrequired
    finalised (GoBD)
  • lockedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • hasAttachmentbooleanrequired
  • createdAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 404, 429, 500

curl 'https://www.debt-flow.io/api/v1/journal-entries/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "id": "string",
  "number": 0,
  "date": "2026-11-01",
  "description": "string",
  "documentNumber": "string",
  "source": {
    "type": "invoice",
    "id": "string"
  },
  "contact": {
    "name": "string",
    "account": "string"
  },
  "postings": [
    {
      "debit": "string",
      "credit": "string",
      "amountCents": 0,
      "taxKey": "output",
      "taxRate": 0,
      "taxCents": 0,
      "taxSide": "debit",
      "debitLabel": "string",
      "creditLabel": "string"
    }
  ],
  "generated": false,
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "hasAttachment": false,
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
PATCH/api/v1/journal-entries/{id}

Only manual journal entries that are not finalised. Derived entries change via their source (invoice, receipt, payment).

Permission: accounting:write

Path parameters

  • idstringrequired
    Resource ID
    max. 128 characters

Body (JSON) · JournalEntryUpdate

  • datestring (date)
    Date (YYYY-MM-DD)
  • descriptionstring
    max. 60 characters
  • documentNumberstring
    max. 36 characters
  • postingsArray<object>
    • debitstringrequired
    • creditstringrequired
    • amountCentsintegerrequired
      Gross amount in cents
      1–100000000000
    • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige" | null
    • taxRatenumber | null
      0–100
    • taxSide"debit" | "credit" | null
    • taxCentsinteger
      empty = calculated from gross amount and tax rate
      0–9007199254740991

Response 200 · JournalEntry

  • idstringrequired
  • numberinteger | nullrequired
    Sequential journal entry number (assigned on finalisation)
    -9007199254740991–9007199254740991
  • datestring (date)required
    Date (YYYY-MM-DD)
  • descriptionstringrequired
  • documentNumberstringrequired
  • sourceobjectrequired
    • typeenumrequired
      Values: invoice, invoice_payment, receipt, receipt_payment, bank_transaction, client_funds, manual, fixed_asset, private_use
    • idstringrequired
  • contactobject | nullrequired
    • namestringrequired
    • accountstring | nullrequired
  • postingsArray<Posting>required
    • debitstringrequired
      Debit account
    • creditstringrequired
      Credit account
    • amountCentsintegerrequired
      Gross amount in cents (> 0)
      -100000000000–100000000000
    • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige" | nullrequired
      Tax type
    • taxRatenumber | nullrequired
    • taxCentsintegerrequired
      Tax amount in cents
      -100000000000–100000000000
    • taxSide"debit" | "credit" | nullrequired
      Account from which the tax is split off (revenue/expense account)
    • debitLabelstring
    • creditLabelstring
  • generatedbooleanrequired
    derived automatically from invoices, payments, receipts
  • lockedbooleanrequired
    finalised (GoBD)
  • lockedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • hasAttachmentbooleanrequired
  • createdAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 404, 409, 429, 500

curl -X PATCH 'https://www.debt-flow.io/api/v1/journal-entries/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "date": "2026-11-01",
  "description": "string",
  "documentNumber": "string",
  "postings": [
    {
      "debit": "string",
      "credit": "string",
      "amountCents": 1,
      "taxKey": null,
      "taxRate": null,
      "taxSide": null,
      "taxCents": 0
    }
  ]
}'
Response 200
{
  "id": "string",
  "number": 0,
  "date": "2026-11-01",
  "description": "string",
  "documentNumber": "string",
  "source": {
    "type": "invoice",
    "id": "string"
  },
  "contact": {
    "name": "string",
    "account": "string"
  },
  "postings": [
    {
      "debit": "string",
      "credit": "string",
      "amountCents": 0,
      "taxKey": "output",
      "taxRate": 0,
      "taxCents": 0,
      "taxSide": "debit",
      "debitLabel": "string",
      "creditLabel": "string"
    }
  ],
  "generated": false,
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "hasAttachment": false,
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
DELETE/api/v1/journal-entries/{id}

Only manual journal entries that are not finalised. Finalised entries are corrected with a reversing entry.

Permission: accounting:write

Path parameters

  • idstringrequired
    Resource ID
    max. 128 characters

Response 204

Success, no content

Possible errors: 400, 401, 403, 404, 409, 429, 500

curl -X DELETE 'https://www.debt-flow.io/api/v1/journal-entries/ID' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
GET/api/v1/journal-entries/pending

Unmatched bank transactions, receipts not yet posted, payments without an invoice and discrepancies after the period lock within the period (default: current year).

Permission: accounting:read

Query parameters

  • fromstring (date)
    Date (YYYY-MM-DD)
  • tostring (date)
    Date (YYYY-MM-DD)

Response 200 · JournalPending

  • fromstring (date)required
    Date (YYYY-MM-DD)
  • tostring (date)required
    Date (YYYY-MM-DD)
  • issuesArray<JournalIssue>required
    • typeenumrequired
      Values: unbooked_receipt, unassigned_bank_transaction, unknown_category, payment_without_invoice, unsupported_tax, changed_after_closing, missing_after_closing, assumed_service_date, tax_missing_after_closing, tax_changed_after_closing, small_business_reporting, small_business_tax_payment, asset_not_registered, review_required
    • sourceIdstringrequired
    • datestring (date)required
      Date (YYYY-MM-DD)
    • messagestringrequired
    • amountCentsinteger
      Amount in cents
      -100000000000–100000000000

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/journal-entries/pending' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "from": "2026-11-01",
  "to": "2026-11-01",
  "issues": [
    {
      "type": "unbooked_receipt",
      "sourceId": "string",
      "date": "2026-11-01",
      "message": "string",
      "amountCents": 0
    }
  ]
}
POST/api/v1/journal-entries/transit-transfers

Assigns a bank transaction as a payout from Stripe/PayPal: bank to money in transit (reversed for a chargeback). Payments run gross through money in transit, fees as incidental costs of payment transactions against money in transit – so only the amount not yet paid out remains on money in transit (DA-07).

Permission: accounting:write

Headers

  • Idempotency-Keystring
    Unique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.
    max. 255 characters

Body (JSON) · TransitTransferCreate

  • bankTransactionIdstringrequired
    Bank transaction of the payout (or chargeback) by the payment service provider
    max. 128 characters
  • providerstring
    max. 40 characters · Default: "Stripe"
  • documentNumberstring
    e.g. Stripe payout ID
    max. 36 characters

Response 201 · JournalEntry

  • idstringrequired
  • numberinteger | nullrequired
    Sequential journal entry number (assigned on finalisation)
    -9007199254740991–9007199254740991
  • datestring (date)required
    Date (YYYY-MM-DD)
  • descriptionstringrequired
  • documentNumberstringrequired
  • sourceobjectrequired
    • typeenumrequired
      Values: invoice, invoice_payment, receipt, receipt_payment, bank_transaction, client_funds, manual, fixed_asset, private_use
    • idstringrequired
  • contactobject | nullrequired
    • namestringrequired
    • accountstring | nullrequired
  • postingsArray<Posting>required
    • debitstringrequired
      Debit account
    • creditstringrequired
      Credit account
    • amountCentsintegerrequired
      Gross amount in cents (> 0)
      -100000000000–100000000000
    • taxKey"output" | "input" | "rc_eu" | "rc_de" | "ige" | nullrequired
      Tax type
    • taxRatenumber | nullrequired
    • taxCentsintegerrequired
      Tax amount in cents
      -100000000000–100000000000
    • taxSide"debit" | "credit" | nullrequired
      Account from which the tax is split off (revenue/expense account)
    • debitLabelstring
    • creditLabelstring
  • generatedbooleanrequired
    derived automatically from invoices, payments, receipts
  • lockedbooleanrequired
    finalised (GoBD)
  • lockedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • hasAttachmentbooleanrequired
  • createdAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)
  • updatedAtstring (date-time) | nullrequired
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 404, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/journal-entries/transit-transfers' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "bankTransactionId": "string",
  "provider": "Stripe",
  "documentNumber": "string"
}'
Response 201
{
  "id": "string",
  "number": 0,
  "date": "2026-11-01",
  "description": "string",
  "documentNumber": "string",
  "source": {
    "type": "invoice",
    "id": "string"
  },
  "contact": {
    "name": "string",
    "account": "string"
  },
  "postings": [
    {
      "debit": "string",
      "credit": "string",
      "amountCents": 0,
      "taxKey": "output",
      "taxRate": 0,
      "taxCents": 0,
      "taxSide": "debit",
      "debitLabel": "string",
      "creditLabel": "string"
    }
  ],
  "generated": false,
  "locked": false,
  "lockedAt": "2026-11-01T09:30:00.000Z",
  "hasAttachment": false,
  "createdAt": "2026-11-01T09:30:00.000Z",
  "updatedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/period-closings

Permission: accounting:read

Query parameters

  • limitinteger
    Number of entries (1–100)
    1–100 · Default: 25
  • cursorstring
    `nextCursor` of the previous page
    max. 500 characters

Response 200

  • object"list"required
  • dataArray<PeriodClosing>required
    • idstringrequired
    • fromstring (date) | nullrequired
      Date (YYYY-MM-DD)
    • throughstring (date)required
      Date (YYYY-MM-DD)
    • entryCountintegerrequired
      -9007199254740991–9007199254740991
    • firstNumberinteger | nullrequired
      -9007199254740991–9007199254740991
    • lastNumberinteger | nullrequired
      -9007199254740991–9007199254740991
    • totalCentsintegerrequired
      Sum of all entry amounts
      -100000000000–100000000000
    • hashstringrequired
      SHA-256 over the content hashes of the finalised journal entries
    • closedByActorrequired
      • type"user" | "api_key" | "oauth" | "system"required
      • idstringrequired
      • labelstring
    • closedAtstring (date-time)required
      Timestamp (ISO 8601)
  • hasMorebooleanrequired
  • nextCursorstring | nullrequired

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/period-closings' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "object": "list",
  "data": [
    {
      "id": "string",
      "from": "2026-11-01",
      "through": "2026-11-01",
      "entryCount": 0,
      "firstNumber": 0,
      "lastNumber": 0,
      "totalCents": 0,
      "hash": "string",
      "closedBy": {
        "type": "user",
        "id": "string",
        "label": "string"
      },
      "closedAt": "2026-11-01T09:30:00.000Z"
    }
  ],
  "hasMore": false,
  "nextCursor": "string"
}
POST/api/v1/period-closings

Finalises all journal entries up to and including through (end of month) in accordance with GoBD (German bookkeeping rules): entries are saved, numbered sequentially, locked with a content hash and recorded in the audit log. Irreversible. If there are open issues (409 open_issues), confirm with acknowledgeIssues: true.

Permission: accounting:write

Headers

  • Idempotency-Keystring
    Unique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.
    max. 255 characters

Body (JSON) · PeriodClosingCreate

  • throughstring (date)required
    last day of the period to lock (end of month)
  • acknowledgeIssuesboolean
    lock despite open issues (e.g. unmatched bank transactions)
    Default: false

Response 201 · PeriodClosing

  • idstringrequired
  • fromstring (date) | nullrequired
    Date (YYYY-MM-DD)
  • throughstring (date)required
    Date (YYYY-MM-DD)
  • entryCountintegerrequired
    -9007199254740991–9007199254740991
  • firstNumberinteger | nullrequired
    -9007199254740991–9007199254740991
  • lastNumberinteger | nullrequired
    -9007199254740991–9007199254740991
  • totalCentsintegerrequired
    Sum of all entry amounts
    -100000000000–100000000000
  • hashstringrequired
    SHA-256 over the content hashes of the finalised journal entries
  • closedByActorrequired
    • type"user" | "api_key" | "oauth" | "system"required
    • idstringrequired
    • labelstring
  • closedAtstring (date-time)required
    Timestamp (ISO 8601)

Possible errors: 400, 401, 403, 409, 422, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/period-closings' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "through": "2026-11-01",
  "acknowledgeIssues": false
}'
Response 201
{
  "id": "string",
  "from": "2026-11-01",
  "through": "2026-11-01",
  "entryCount": 0,
  "firstNumber": 0,
  "lastNumber": 0,
  "totalCents": 0,
  "hash": "string",
  "closedBy": {
    "type": "user",
    "id": "string",
    "label": "string"
  },
  "closedAt": "2026-11-01T09:30:00.000Z"
}
GET/api/v1/period-closings/preview

Shows how many journal entries up to through would be finalised and which open issues exist.

Permission: accounting:read

Query parameters

  • throughstring (date)required
    Date (YYYY-MM-DD)

Response 200 · PeriodClosingPreview

  • fromstring (date) | nullrequired
    Date (YYYY-MM-DD)
  • throughstring (date)required
    Date (YYYY-MM-DD)
  • entryCountintegerrequired
    -9007199254740991–9007199254740991
  • generatedCountintegerrequired
    -9007199254740991–9007199254740991
  • manualCountintegerrequired
    -9007199254740991–9007199254740991
  • totalCentsintegerrequired
    Amount in cents
    -100000000000–100000000000
  • issuesArray<JournalIssue>required
    • typeenumrequired
      Values: unbooked_receipt, unassigned_bank_transaction, unknown_category, payment_without_invoice, unsupported_tax, changed_after_closing, missing_after_closing, assumed_service_date, tax_missing_after_closing, tax_changed_after_closing, small_business_reporting, small_business_tax_payment, asset_not_registered, review_required
    • sourceIdstringrequired
    • datestring (date)required
      Date (YYYY-MM-DD)
    • messagestringrequired
    • amountCentsinteger
      Amount in cents
      -100000000000–100000000000
  • canClosebooleanrequired
  • reasonstring | nullrequired

Possible errors: 400, 401, 403, 429, 500

curl 'https://www.debt-flow.io/api/v1/period-closings/preview?through=2026-11-01' \
  -H "Authorization: Bearer $DEBTFLOW_API_KEY"
Response 200
{
  "from": "2026-11-01",
  "through": "2026-11-01",
  "entryCount": 0,
  "generatedCount": 0,
  "manualCount": 0,
  "totalCents": 0,
  "issues": [
    {
      "type": "unbooked_receipt",
      "sourceId": "string",
      "date": "2026-11-01",
      "message": "string",
      "amountCents": 0
    }
  ],
  "canClose": false,
  "reason": "string"
}