Developers

PUBLIC API v1

Add supporting documents to a transaction

POST /api/v1/companies/{company_pk}/accounting/transactions/{public_id}/attachments/

Attach one or more optional supporting documents to the transaction. Unlike the primary Beleg (`attachment`), these extras are NOT processed: no OCR, no reconciliation, no VAT/item sync, and they are not emitted as a Beleglink in DATEV/JPK. Send new files as multipart `files`, and/or link existing documents by passing their public_ids in `attachments`. Does not change the transaction's primary Beleg or its verified state.

Permission: write_transactions write_documents · Direct link

Company-scoped. Account permissions, plan limits and document state still apply.

Path and query parameters

ParameterLocation / typeDescription
company_pkRequiredpath · string (uuid)Not specified
public_idRequiredpath · string (uuid)A UUID string identifying this Transaction.

Request body

multipart/form-data

FieldType / accepted valuesDescription
filesstring (binary)[]Not specified
attachmentsstring (uuid)[]Not specified

Responses

200 Response fields

application/json

FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
externalIdstringNot specified
status"PENDING" | "BOOKED" | "UNDEFINED"* `PENDING` - Pending * `BOOKED` - Booked * `UNDEFINED` - Undefined
amountRequiredstring (decimal)Not specified
amountExchangedstring (decimal) | nullNot specified
currencyRequiredobjectNot specified
Nested fields
FieldType / accepted valuesDescription
fullNameRequiredRead onlystringNot specified
isoCodeRequiredstringNot specified
currencyExchangedRequiredobjectNot specified
Nested fields
FieldType / accepted valuesDescription
fullNameRequiredRead onlystringNot specified
isoCodeRequiredstringNot specified
descriptionstringNot specified
descriptionLongstring | nullNot specified
userStatus"UNVERIFIED" | "VERIFIED"* `UNVERIFIED` - Unverified * `VERIFIED` - Verified
vatRate23 | 19 | 8 | 7 | 5 | 0 | -1 | -2* `23` - 23% * `19` - 19% * `8` - 8% * `7` - 7% * `5` - 5% * `0` - 0% * `-1` - CUSTOM % * `-2` - Reverse charge
vatAmountstring (decimal)Not specified
valueDatestring (date-time) | nullNot specified
paymentDatestring (date) | nullNot specified
paymentType"BANK" | "CASH" | "CREDIT_CARD" | "PAYPAL" | "NOT_PAID" | "" | nullNot specified
ledgerPaymentAccountCodestring | nullNot specified
categoryRequiredobjectNot specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
nameRequiredRead onlystringNot specified
parentstring (uuid) | nullNot specified
cashflowTypeRequiredstringNot specified
vatApplied"YES" | "NO"* `YES` - Yes * `NO` - No
metadataobjectNot specified
descriptionRequiredRead onlystringNot specified
examplesRequiredRead onlystringNot specified
companyCategoryRequiredRead onlyobjectNot specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
codeRequiredstringNot specified
nameRequiredstringNot specified
nameDestringNot specified
namePlstringNot specified
descriptionstringNot specified
cashflowType"ASSET" | "LIABILITY" | "EQUITY" | "INCOME" | "EXPENSE"* `ASSET` - Asset * `LIABILITY` - Liability * `EQUITY` - Equity * `INCOME` - Income * `EXPENSE` - Expense
vatApplicabilitybooleanNot specified
suggestedVatRateintegerNot specified
isCustombooleanNot specified
isActivebooleanNot specified
isBookablebooleanNot specified
categoryGroupstringNot specified
metadataobjectNot specified
isRefundbooleanNot specified
ibanstringNot specified
bankLogoRequiredRead onlystring | nullNot specified
verifiedAtstring (date-time) | nullNot specified
vatAmountExchangedstring (decimal) | nullNot specified
cashflowTypeRequiredstringNot specified
sourceRequiredstringNot specified
attachmentstring (uuid) | nullNot specified
additionalAttachmentsRequiredRead onlyobject[]Not specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
filestring (uri) | nullNot specified
invoicestring (uuid) | nullNot specified
supplierCountry"DE" | "PL" | "DOMESTIC" | "INSIDE_EU" | "OUTSIDE_EU" | ""Not specified
supplierCountryNameRequiredstringNot specified
clientstring (uuid) | nullNot specified
vendorstring (uuid) | nullNot specified
vendorDetailsRequiredRead onlyobjectNot specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
nameRequiredstringNot specified
displayLogoUrlRequiredRead onlystringNot specified
catalogKeystringNot specified
reverseChargebooleanNot specified
saleType"GOODS" | "SERVICES" | ""Not specified
inputVatType"NO_VAT" | "GERMAN_VAT" | "FOREIGN_VAT" | "" | nullNot specified
categoryMetadataobjectNot specified
logostring (uri) | nullNot specified
appliedRuleRequiredRead onlyobjectMinimal serializer for embedding in transaction responses.
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
nameRequiredstringNot specified
conditionsSummaryRequiredRead onlystringNot specified
advisorNotesstringPrivate memo, not visible to your tax advisor. Use the transaction discussion to contact your advisor.
categorizationStatus"PENDING" | "CATEGORIZED" | "UNCATEGORIZED"* `PENDING` - Pending * `CATEGORIZED` - Categorized * `UNCATEGORIZED` - Uncategorized
itemsRequiredRead onlyobject[]Not specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
descriptionstringNot specified
amountRequiredstring (decimal)Not specified
amountExchangedstring (decimal) | nullNot specified
vatRate23 | 19 | 8 | 7 | 5 | 0 | -1 | -2* `23` - 23% * `19` - 19% * `8` - 8% * `7` - 7% * `5` - 5% * `0` - 0% * `-1` - CUSTOM % * `-2` - Reverse charge
vatAmountstring (decimal)Not specified
vatAmountExchangedstring (decimal) | nullNot specified
vatType"VAT_INCLUDED" | "VAT_EXCLUDED"* `VAT_INCLUDED` - VAT Included * `VAT_EXCLUDED` - VAT Excluded
categoryRequiredRead onlyobjectNot specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
nameRequiredRead onlystringNot specified
parentstring (uuid) | nullNot specified
cashflowTypeRequiredstringNot specified
vatApplied"YES" | "NO"* `YES` - Yes * `NO` - No
metadataobjectNot specified
descriptionRequiredRead onlystringNot specified
examplesRequiredRead onlystringNot specified
companyCategoryRequiredRead onlyobjectNot specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
codeRequiredstringNot specified
nameRequiredstringNot specified
nameDestringNot specified
namePlstringNot specified
descriptionstringNot specified
cashflowType"ASSET" | "LIABILITY" | "EQUITY" | "INCOME" | "EXPENSE"* `ASSET` - Asset * `LIABILITY` - Liability * `EQUITY` - Equity * `INCOME` - Income * `EXPENSE` - Expense
vatApplicabilitybooleanNot specified
suggestedVatRateintegerNot specified
isCustombooleanNot specified
isActivebooleanNot specified
isBookablebooleanNot specified
categoryGroupstringNot specified
metadataobjectNot specified
professionalUsePartstring (decimal)Fraction of business use (0.000 to 1.000)
orderintegerNot specified
metadataobjectNot specified
isLockedbooleanNot specified
usesPreviousSkrAccountRequiredRead onlybooleanNot specified
documentNotRequiredboolean | nullNot specified
400 Response fields

application/json

FieldType / accepted valuesDescription
detailRequiredstringNot specified
codeintegerNot specified
type_stringNot specified
fieldRequiredstringNot specified
401 Response fields

application/json

FieldType / accepted valuesDescription
detailRequiredRead onlystringNot specified
403 Missing scope, company mismatch, unsupported operation, or a plan/account restriction.
429 Rate limit exceeded. Wait for the Retry-After header before retrying.

Use the base URL https://api.norman.finance/api/v1. Sign up or log in to Norman to create an API key, then send it as a Bearer token. For an OpenAPI JSON file, contact support.