Skip to main content
Version: 1.0.0

Send invoice (async)


This endpoint allows invoice data compliant with UBL 2.1 / PEPPOL BIS standards to be submitted asynchronously as a JSON object (ublDto). No base64-encoded file upload is required; all invoice details are provided directly in a structured JSON format. When the request is accepted, the document is placed in the processing queue and a trackingId is returned. The processing status can be queried at any time using this ID via the /invoice/document-status/{trackingId} endpoint.

Endpoint

PropertyValue
URLPOST /invoice/send-document-async-json
MethodPOST
R-AuthR-Auth: {company-jwt}
Base URLStage Environment https://api-stage.docnova.ai/
Production Environment https://api.docnova.ai/

Example Request

curl --location '{{baseUrl}}/invoice/send-document-async-json' \
--header 'Content-Type: application/json' \
--header 'R-Auth: {{companyJwt}}' \
--data-raw '{
"apiKey": "{{companyApiKey}}",
"ublDto": { ... },
"receiverEmails": []
}'

Request body

{
"apiKey": "<company-apiKey>",
"ublDto": {},
"receiverEmails": ["recipient@example.com"]
}

The request body contains the top-level wrapper with authentication and the ublDto invoice object.

Request fields

FieldTypeRequiredDescription
apiKeystringRequiredCompany API key.
ublDtoobjectRequiredUBL invoice object. See the full schema in the sections below.
receiverEmailsarrayOptionalEmail addresses to notify on delivery.

Full example

curl --location 'https://api-stage.docnova.ai/invoice/send-document-async-json' \
-H 'accept: */*' \
-H 'R-Auth: {{jwt_token}}' \
-H 'Content-Type: application/json' \
-d '{
"apiKey": "{{your_api_key}}",
"ublDto": {
"Type": "PEPPOL_BIS",
"IsPeppolParticipant": true,
"CompanyId": "{{company_uuid}}",
"ProfileType": "EN16931",
"CustomizationID": { "Value": "urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended" },
"ID": { "Value": "INV-2025-001" },
"IssueDate": { "Value": "2025-12-08" },
"DueDate": { "Value": "2025-12-05" },
"InvoiceTypeCode": { "Value": "380" },
"Note": [{ "Value": "Thank you for the good cooperation." }],
"DocumentCurrencyCode": { "Value": "EUR" },
"BuyerReference": { "Value": "buyer-ref-001" },
"OrderReference": { "ID": { "Value": "PO-12345" }, "SalesOrderID": { "Value": "SO-67890" } },
"AccountingSupplierParty": {
"Party": {
"EndpointID": { "Value": "DE123456789", "schemeID": "9930" },
"PartyName": [{ "Name": { "Value": "Supplier Company GmbH" } }],
"PostalAddress": { "StreetName": { "Value": "Musterstraße 12" }, "CityName": { "Value": "Berlin" }, "PostalZone": { "Value": "10115" }, "Country": { "IdentificationCode": { "Value": "DE" } } },
"PartyTaxScheme": [{ "CompanyID": { "Value": "DE123456789" }, "TaxScheme": { "ID": { "Value": "VAT" } } }],
"PartyLegalEntity": [{ "RegistrationName": { "Value": "Supplier Company GmbH" }, "CompanyID": { "Value": "DE123456789" } }],
"Contact": { "Name": { "Value": "Contact Name" }, "Telephone": { "Value": "+49 170 1234567" }, "ElectronicMail": { "Value": "user@example.com" } }
}
},
"AccountingCustomerParty": {
"Party": {
"EndpointID": { "Value": "DE987654321", "schemeID": "9930" },
"PartyName": [{ "Name": { "Value": "Buyer Company GmbH" } }],
"PostalAddress": { "StreetName": { "Value": "Kaufstraße 5" }, "CityName": { "Value": "Hamburg" }, "PostalZone": { "Value": "20095" }, "Country": { "IdentificationCode": { "Value": "DE" } } },
"PartyTaxScheme": [{ "CompanyID": { "Value": "DE987654321" }, "TaxScheme": { "ID": { "Value": "VAT" } } }],
"PartyLegalEntity": [{ "RegistrationName": { "Value": "Buyer Company GmbH" }, "CompanyID": { "Value": "DE987654321" } }],
"Contact": { "Name": { "Value": "Buyer Contact" }, "Telephone": { "Value": "+49 170 1234567" }, "ElectronicMail": { "Value": "user@example.com" } }
}
},
"Delivery": [{
"ActualDeliveryDate": { "Value": "2025-12-13" },
"DeliveryLocation": { "Address": { "StreetName": { "Value": "Delivery Street 5" }, "CityName": { "Value": "Berlin" }, "PostalZone": { "Value": "10115" }, "Country": { "IdentificationCode": { "Value": "DE" } } } },
"DeliveryParty": { "PartyName": [{ "Name": { "Value": "Delivery Recipient" } }] }
}],
"PaymentMeans": [{
"PaymentMeansCode": { "name": "SEPA credit transfer", "Value": "58" },
"PayeeFinancialAccount": { "ID": { "Value": "DE89370400440532013000" }, "Name": { "Value": "Account Holder Name" } }
}],
"PaymentTerms": [{ "Note": [{ "Value": "Please remit until 05.12.2025" }] }],
"TaxTotal": [{
"TaxAmount": { "currencyID": "EUR", "Value": 210 },
"TaxSubtotal": [{
"TaxableAmount": { "currencyID": "EUR", "Value": 2100 },
"TaxAmount": { "currencyID": "EUR", "Value": 210 },
"TaxCategory": { "ID": { "Value": "S" }, "Percent": { "Value": 10 }, "TaxScheme": { "ID": { "Value": "VAT" } } }
}]
}],
"LegalMonetaryTotal": {
"LineExtensionAmount": { "currencyID": "EUR", "Value": 2100 },
"TaxExclusiveAmount": { "currencyID": "EUR", "Value": 2100 },
"TaxInclusiveAmount": { "currencyID": "EUR", "Value": 2310 },
"AllowanceTotalAmount": { "currencyID": "EUR", "Value": 0 },
"ChargeTotalAmount": { "currencyID": "EUR", "Value": 0 },
"PrepaidAmount": { "currencyID": "EUR", "Value": 0 },
"PayableAmount": { "currencyID": "EUR", "Value": 2310 }
},
"InvoiceLine": [{
"ID": { "Value": "1" },
"InvoicedQuantity": { "unitCode": "MTQ", "Value": 20 },
"LineExtensionAmount": { "currencyID": "EUR", "Value": 2100 },
"Item": {
"Name": { "Value": "Product 1" },
"SellersItemIdentification": { "ID": { "Value": "01" } },
"ClassifiedTaxCategory": [{ "ID": { "Value": "S" }, "Percent": { "Value": 10 }, "TaxScheme": { "ID": { "Value": "VAT" } } }]
},
"Price": { "PriceAmount": { "currencyID": "EUR", "Value": 105 }, "BaseQuantity": { "Value": 1 } }
}]
}
}'
ublDto — Document Object
Field NameTypeRequiredDescription
ublDto.Typestring (enum)OptionalDocument format type. E.g.: PEPPOL_BIS, XRECHNUNG, ZUGFERD. See Parameter Values Reference table for full list.
ublDto.IsPeppolParticipantbooleanOptionalIndicates whether the recipient is registered on the Peppol network. If true, the document is routed via Peppol.
ublDto.CompanyIdstring (UUID)ConditionalUUID of the sending company. Required if apiKey is not provided.
ublDto.ProfileTypestring (enum)OptionalZUGFeRD / Factur-X profile type. Default: EN16931.
ublDto.CustomizationID.ValuestringOptionalInvoice customization identifier (urn value). Specifies PEPPOL / EN16931 compliance.
ublDto.ID.ValuestringOptionalInvoice number / unique document identifier.
ublDto.IssueDate.Valuestring (ISO 8601)OptionalInvoice issue date. Format: YYYY-MM-DD.
ublDto.DueDate.Valuestring (ISO 8601)OptionalInvoice due date. Format: YYYY-MM-DD.
ublDto.InvoiceTypeCode.ValuestringOptionalUN/CEFACT invoice type code. E.g.: 380 = Commercial Invoice, 381 = Credit Note, 384 = Corrected Invoice.
ublDto.Note[].ValuestringOptionalFree-text note attached to the invoice.
ublDto.DocumentCurrencyCode.ValuestringOptionalInvoice currency code (ISO 4217). E.g.: EUR, USD, GBP.
ublDto.BuyerReference.ValuestringOptionalBuyer reference number (Buyer Reference / Leitweg-ID).
ublDto.OrderReference.ID.ValuestringOptionalPurchase order number.
ublDto.OrderReference.SalesOrderID.ValuestringOptionalSales order number.
ublDto.AccountingSupplierPartyobjectOptionalSupplier / seller information. The Party object contains EndpointID (Peppol ID), PartyName, PostalAddress, PartyTaxScheme, PartyLegalEntity, and Contact sub-objects.
ublDto.AccountingSupplierParty.Party.EndpointID.ValuestringOptionalSupplier's Peppol Endpoint ID value.
ublDto.AccountingSupplierParty.Party.EndpointID.schemeIDstringOptionalEndpoint ID scheme code. E.g.: 9930 = German Tax No, 0088 = GLN.
ublDto.AccountingCustomerPartyobjectOptionalCustomer / buyer information. The Party object contains EndpointID, PartyName, PostalAddress, PartyTaxScheme, PartyLegalEntity, and Contact sub-objects.
ublDto.Delivery[].ActualDeliveryDate.Valuestring (ISO 8601)OptionalActual delivery date. Format: YYYY-MM-DD.
ublDto.Delivery[].DeliveryLocation.AddressobjectOptionalDelivery address. Contains StreetName, CityName, PostalZone, and Country sub-fields.
ublDto.PaymentMeans[].PaymentMeansCode.ValuestringOptionalPayment method code. E.g.: 58 = SEPA Credit Transfer, 30 = Credit Transfer, 49 = Direct Debit.
ublDto.PaymentMeans[].PayeeFinancialAccount.ID.ValuestringOptionalPayee bank account IBAN number.
ublDto.PaymentMeans[].PayeeFinancialAccount.Name.ValuestringOptionalBank account holder name.
ublDto.PaymentTerms[].Note[].ValuestringOptionalFree-text description of payment terms.
ublDto.TaxTotal[].TaxAmount.ValuenumberOptionalTotal tax amount.
ublDto.TaxTotal[].TaxAmount.currencyIDstringOptionalCurrency code for the tax amount (ISO 4217).
ublDto.TaxTotal[].TaxSubtotal[].TaxableAmount.ValuenumberOptionalTaxable base amount.
ublDto.TaxTotal[].TaxSubtotal[].TaxCategory.ID.ValuestringOptionalTax category code. E.g.: S = Standard, Z = Zero Rated, E = Exempt, AE = Reverse Charge.
ublDto.TaxTotal[].TaxSubtotal[].TaxCategory.Percent.ValuenumberOptionalTax rate percentage. E.g.: 19, 7, 10.
ublDto.LegalMonetaryTotal.LineExtensionAmount.ValuenumberOptionalSum of invoice line net amounts (excluding tax).
ublDto.LegalMonetaryTotal.TaxExclusiveAmount.ValuenumberOptionalTotal amount excluding VAT.
ublDto.LegalMonetaryTotal.TaxInclusiveAmount.ValuenumberOptionalTotal amount including VAT.
ublDto.LegalMonetaryTotal.PayableAmount.ValuenumberOptionalNet payable amount.
ublDto.InvoiceLine[].ID.ValuestringOptionalInvoice line sequence number.
ublDto.InvoiceLine[].InvoicedQuantity.ValuenumberOptionalInvoiced quantity.
ublDto.InvoiceLine[].InvoicedQuantity.unitCodestringOptionalUnit of measure code (UN/ECE Rec. 20). E.g.: MTQ = Cubic Metre, C62 = Each, KGM = Kilogram.
ublDto.InvoiceLine[].LineExtensionAmount.ValuenumberOptionalInvoice line net amount (excluding tax).
ublDto.InvoiceLine[].Item.Name.ValuestringOptionalProduct / service name.
ublDto.InvoiceLine[].Item.SellersItemIdentification.ID.ValuestringOptionalSeller's item/product code.
ublDto.InvoiceLine[].Price.PriceAmount.ValuenumberOptionalUnit price.
ublDto.InvoiceLine[].Price.BaseQuantity.ValuenumberOptionalBase quantity the price applies to. Typically 1.
receiverEmailsarray (string)OptionalRecipient email addresses for sending the invoice via email after processing.
mailTemplateIdstringOptionalCustom mail template ID to be used for email delivery.
businessTypestring (enum)OptionalBusiness model type: B2B, B2C, or B2G.

200 — Succesfull Response

{
"trackingId": "uuid",
"status": "PENDING",
"message": "Document process started successfully"
}

ERROR

{
"trackingId": "uuid",
"status": "FAILED",
"errors": ["[BR-CO-15]..."],
"errorType": "VALIDATION_ERROR"
}
info

A 200 OK only means the document was accepted, not delivered. Always check the final status with GET /invoice/document-status/{trackingId}.

Response fields

FieldTypeDescription
trackingIdUUIDUse this to poll GET /invoice/document-status/{trackingId} for processing updates.
statusstringInitial status — always "PENDING" on acceptance.
messagestringHuman-readable message confirming the document was queued.

Tracking

Use the trackingId to check delivery status via Document status.