Developers

PUBLIC API v1

Create a new attachment

POST /api/v1/companies/{company_pk}/attachments/

Endpoint to create a new attachment. This endpoint allows the creation of a new attachment with the following fields: - \`file\`: The file being attached (required). - \`transactions\`: List of related transactions, see more in /api/v1/accounting/transactions/. - \`company\`: The company associated with the attachment, see more in /api/v1/companies/. - \`attachment_type\`: Type of the attachment, available types: invoice, receipt. - \`amount\`: Amount related to the attachment. - \`amount_exchanged\`: Exchanged amount in a different currency. - \`attachment_number\`: Unique number for the attachment. - \`brand_name\`: Brand name associated with the attachment. - \`currency\`: Currency of the amount, default is "EUR". - \`currency_exchanged\`: Exchanged currency, default is "EUR". - \`description\`: Description of the attachment. - \`supplier_country\`: Country of the supplier, available choices are: [ [ "DE", "Germany" ], [ "INSIDE_EU", "Inside EU" ], [ "OUTSIDE_EU", "Outside EU" ] ]. First value in the array is the db-understandable code, second is the representation. - \`value_date\`: Date of the value. - \`vat_sum_amount\`: VAT sum amount. - \`vat_sum_amount_exchanged\`: Exchanged VAT sum amount. - \`vat_rate\`: VAT rate, see more in /api/v1/choices/vat-percents. - \`sale_type\`: Type of sale, see more in /api/v1/choices/sale-types/. - \`additional_metadata\`: Additional metadata for the attachment. All fields except \`file\` are optional.

Permission: 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

Request body

application/json

FieldType / accepted valuesDescription
fileRequiredstring (binary)Not specified
transactionsRequiredstring (uuid)[]Not specified
companystring (uuid)Not specified
attachmentType"invoice" | "receipt" | "contract" | "other"* `invoice` - Invoice * `receipt` - Receipt * `contract` - Contract * `other` - Other
amountstring (decimal) | nullNot specified
amountExchangedstring (decimal) | nullNot specified
attachmentNumberstringNot specified
brandNamestringNot specified
currencystringNot specified
currencyExchangedstring | nullNot specified
descriptionstringNot specified
supplierCountry"DE" | "PL" | "DOMESTIC" | "INSIDE_EU" | "OUTSIDE_EU" | ""Not specified
valueDatestring (date-time) | nullNot specified
vatSumAmountstring (decimal) | nullNot specified
vatSumAmountExchangedstring (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
saleType"GOODS" | "SERVICES" | ""Not specified
additionalMetadataobject | nullNot specified
extractedItemsobject | nullPer-item OCR extraction results: [{description, amount, vat_rate, ...}]
isEinvoicebooleanNot specified

multipart/form-data

FieldType / accepted valuesDescription
fileRequiredstring (binary)Not specified
transactionsRequiredstring (uuid)[]Not specified
companystring (uuid)Not specified
attachmentType"invoice" | "receipt" | "contract" | "other"* `invoice` - Invoice * `receipt` - Receipt * `contract` - Contract * `other` - Other
amountstring (decimal) | nullNot specified
amountExchangedstring (decimal) | nullNot specified
attachmentNumberstringNot specified
brandNamestringNot specified
currencystringNot specified
currencyExchangedstring | nullNot specified
descriptionstringNot specified
supplierCountry"DE" | "PL" | "DOMESTIC" | "INSIDE_EU" | "OUTSIDE_EU" | ""Not specified
valueDatestring (date-time) | nullNot specified
vatSumAmountstring (decimal) | nullNot specified
vatSumAmountExchangedstring (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
saleType"GOODS" | "SERVICES" | ""Not specified
additionalMetadataobject | nullNot specified
extractedItemsobject | nullPer-item OCR extraction results: [{description, amount, vat_rate, ...}]
isEinvoicebooleanNot specified

application/x-www-form-urlencoded

FieldType / accepted valuesDescription
fileRequiredstring (binary)Not specified
transactionsRequiredstring (uuid)[]Not specified
companystring (uuid)Not specified
attachmentType"invoice" | "receipt" | "contract" | "other"* `invoice` - Invoice * `receipt` - Receipt * `contract` - Contract * `other` - Other
amountstring (decimal) | nullNot specified
amountExchangedstring (decimal) | nullNot specified
attachmentNumberstringNot specified
brandNamestringNot specified
currencystringNot specified
currencyExchangedstring | nullNot specified
descriptionstringNot specified
supplierCountry"DE" | "PL" | "DOMESTIC" | "INSIDE_EU" | "OUTSIDE_EU" | ""Not specified
valueDatestring (date-time) | nullNot specified
vatSumAmountstring (decimal) | nullNot specified
vatSumAmountExchangedstring (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
saleType"GOODS" | "SERVICES" | ""Not specified
additionalMetadataobject | nullNot specified
extractedItemsobject | nullPer-item OCR extraction results: [{description, amount, vat_rate, ...}]
isEinvoicebooleanNot specified

Responses

201 Response fields

application/json

FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
createdRequiredRead onlystring (date-time)Not specified
filestring (uri) | nullNot specified
transactionsRequiredstring (uuid)[]Not specified
companyRequiredstring (uuid)Not specified
attachmentType"invoice" | "receipt" | "contract" | "other"* `invoice` - Invoice * `receipt` - Receipt * `contract` - Contract * `other` - Other
amountstring (decimal) | nullNot specified
amountExchangedstring (decimal) | nullNot specified
attachmentNumberstringNot specified
brandNamestringNot specified
currencystringNot specified
currencyExchangedstring | nullNot specified
descriptionstringNot specified
supplierCountry"DE" | "PL" | "DOMESTIC" | "INSIDE_EU" | "OUTSIDE_EU" | ""Not specified
valueDatestring (date-time) | nullNot specified
vatSumAmountstring (decimal) | nullNot specified
vatSumAmountExchangedstring (decimal) | nullNot specified
fileNamestringNot specified
saleType"GOODS" | "SERVICES" | ""Not 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
extractedItemsobject | nullPer-item OCR extraction results: [{description, amount, vat_rate, ...}]
fileHashstringNot specified
retentionUntilstring (date) | nullNot specified
externalSourcestringNot specified
externalIdstringNot 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.