API Reference

bludelta.ai is a machine learning-based invoice and document capture solution. Based on an image or pdf file as input it returns data that can be processed by machines, works out of the box with standard recognition rates of the most popular fields >90%. For further general information and a free test please visit: https://bludelta.ai

This website documents the core of the bludelta.ai service – the bludelta.ai JSON API. The API returns document and invoice details (e.g. like an invoice or document date, invoice id, gross/net amounts, VATs, and many more fields). Aside from the extracted data, it returns also raw text (ocr) and a pdf with marks of the extracted fields. The API should be used to programmatically integrate an invoice capture service into your existing workflows. It is cloud-based but can be also installed locally. Invoices are just interpreted and NOT STORED!

API Access Token
To use this service you will need an API token. In case you don’t have one yet please contact bludelta-support@blumatix.at and ask for a free test key.

Sample Integration Clients
You can download sample clients in C#, java, and Powershell from our GitHub repository: https://github.com/blumatix
Request an open API compliant API description file from here.

No Developer? Test bludelta.ai with our Web Interface
bludelta.ai offers also UI components on top of our core API. E.g. in case you just want to do a quick test without accessing our programmatic interface then we recommend you to use our online interface: https://bludelta.ai/testen

Supported invoice details

Title Description Response Type Id Notice
Document Type Classify document to Invoice/CreditMemo/Other DetectionResponse 8192 Value: Invoice, CreditMemo or Other
Invoice Currency Main currency of invoice DetectionResponse 524288 ISO Code 4217
Invoice Id Document identifier DetectionResponse 1024
Invoice Date Date of issue DetectionResponse 64 YYYY-MM-DD (ISO 8601)
Grand Total Amount Grand total amount DetectionResponse 16 decimal separator '.', no group separator, two decimal digits
Vat Group Vat rate
Net amount
Vat amount
DetectionGroupResponse 536870912 for each vat detail: one DetectionResponse
Net Total Amount Total net amount DetectionResponse 256 deprecated
Use Vat Groups instead to calculate total net amount
Vat Total Amount Total vat amount DetectionResponse 1073741824 deprecated
Use Vat Groups instead to calculate total vat amount
Iban Iban DetectionResponse 16384 for each Iban: one DetectInvoiceResponse
Bic Bic DetectionResponse 32768 for each Bic: one DetectInvoiceResponse
Bank Group Bank Code
Bank Account
DetectionGroupResponse 17179869184 for each bank detail: one DetectionResponse
Due Date Group Due Date Date
Due Date Duration
DetectionGroupResponse 17592186044416 for each due date detail: one DetectionResponse
Discount Group Discount Date
Discount Duration
Discount Percent
DetectionGroupResponse 1099511627776 for each discount detail: one DetectionResponse
UId Vat Id classified for Sender or Receiver or other DetectionResponse 8388608 Sender/Receiver classification is returned in Name property (SenderVatId, ReceiverVatId, VatId)
Customer Id Customer Identifier DetectionResponse 2097152
Tax Number German Tax Number DetectionResponse 4194304
Delivery Note Id Delivery Note Identifier in header DetectionResponse 1048576 single identifier in header
Delivery Date Delivery Date DetectionResponse 8 single date - no timespan
Receiver Order Id Order Identifier of Receiver in header DetectionResponse 33554432 single identifier in header
Receiver Order Date Order Date of Receiver DetectionResponse 134217728
Sender Order Id Order Identifier of Sender DetectionResponse 16777216
Sender Order Date Order Date of Sender DetectionResponse 67108864
ISR Reference Swiss inpayment slip reference DetectionResponse 34359738368
ISR Subscriber ISR customer number DetectionResponse 35184372088832
KID Number KID number is used in Norway for payment identification DetectionResponse 70368744177664
Company Registration Number Local company registration number for Sender or Receiver. Currently only supported for Czechia. DetectionResponse 140737488355328
Sender Name Name of Sender DetectionResponse 2 deprecated
Use name of Sender contact instead
Sender Contact Contact information of Sender ContactResponse 2 Name, Address, Email, ...
Receiver Contact Contact information of Sender ContactResponse 128 Name, Address, Email, ...
Contacts A list of all contacts that where found on the invoice - including the sender and receiver contacts. List of ContactResponse 281474976710656 Each contact consists of: Name, Address, Email, ...
Line Items Line item table LineItemTableResponse 65536 Each line item (LineItemResponse) contains: ItemId, PositionNumber, Description, Quantity, UnitPrice, OrderId, DeliveryId, TotalAmount

Release Information

What's New in V1.15.1

  • US#9741 For German documents, all contacts found are returned. The contact prediction quality for german documents also improved.

What's New in V1.15

  • US#8865 Language Portuguese and Region Portugal added
  • US#9634 New invoice detail: Company Registration number (for czech)
  • US#9676 New invoice detail: All Contacts

Improvements

  • US#8691 Language Polish and region Poland improved
  • US#9734 All found invoice details are returned for document type "Other"
  • US#8899 Improvement of Contacts

Issues / Bugs fixes

  • ISSUE#9367 Czech ICO number needed
  • ISSUE#9372 OCR splits up one word into two
  • ISSUE#9374 Deficient pfd format fails to return predictions
  • ISSUE#9644 Fix a situation where a Due Date was predicted instead of the Invoice Date
  • ISSUE#9726 Fix Amazon Business invoices
  • ISSUE#9737 Fix Deutsche Telekom invoices
  • BUG#9600 Fix Facebook invoices
  • ISSUE#9758 Fix BLU DELTA Service Crashes due to extremely large images in PDFs
  • ISSUE#7709 Same Tax number highlighted several times in Result Pdf
  • ISSUE#9501 Invoice Id improved
  • BUG#9115 Amounts followed by special characters where not found

What's New in V1.14

  • US#8857 Language Norwegian and Region Norway added
  • US#8858 Language Slovakian and Region Slovakia added
  • US#8859 Language Croatian and Region Croatia added
  • US#8860 Language Turkish and Region Turkey added
  • US#8492 Region United Arab Emirates added
  • US#7846 New invoice detail: KID Number
  • #9289 Temporarily reduced Vat Rates in Norway
  • US#8493 Region South Africa added
  • US#7847 Use of Swiss QR Code

Improvements

  • US#8630 Vat Id classification Sender/Receiver improved
  • US#8690 Region Czechia improved
  • US#8851/8855 Line Items improved

Issues / Bugs fixes

  • Bug#7710 BIC was often wrong
  • ISSUE#8954 Fixed OCR problems which could happen in specific situations (OnPremise)
  • ISSUE#8944 Document Type is not correct
  • ISSUE#8959 Invoice Id is not correct

What's New in V1.13

  • Changed IsrNumber to IsrReference
  • US#8002 New invoice detail Payment conditions: Due Date and Discount
  • US#8683 New invoice detail: Isr Subscriber
  • US#8419 Full text can be requested
  • US#8494 Language Dutch and Region Netherlands added
  • US#8366 Region France added
  • US#8367 Region Mexico added
  • US#8368 Region Spain added
  • US#8493 Region South Africa added
  • US#8495 Region Italy added

Issues / Bugs fixes

  • ISSUE#8788 Missing Result Pdf fixed
  • ISSUE#8697 Corrupt Pdf format fixed
  • ISSUE#8698 Problems with Bank Group in UK fixed
  • ISSUE#8552 Invoice Id fixed

What's New in V1.12

  • Changed DetectInvoiceRequest.Filter, DetectionResponse.Type and DetectionGroupResponse.Type from Int32 to Int64 to support more invoice details
  • US#8310 Language Czech and Region Czechia added
  • US#8220 Languages Italien and French and Region Switzerland added
  • US#8281 Region United Kingdom added
  • US#8168 Region New Zealand added
  • US#8167 Region Australia added
  • US#7842 New invoice detail: Bank Information
  • US#7845 New invoice detail: Swiss ISR Reference

Improvements

  • US#8167 Language English has been improved
  • 8576 Multiple Receiver Order Ids and Delivery Note Ids predicted, independent from line items
  • US#8356 Vat Ids for Poland have been improved

Issues / Bugs fixes

  • ISSUE#8567 Timeout for invoice fixed
  • ISSUE#8389 Limit of Line Items removed
  • ISSUE#8438 Fix multiple Vat Groups

What's New in V1.11

  • US#7874 Temporarily reduced Vat Rates in Germany and Austria implemented

Bug/Issue Fixes

  • ISSUE#7600: Unit price in line items is not of datatype Amount
  • ISSUE#8039: Invoice Id cut off
  • BUG#7259: Incorrect Bounding Box for Sender name
  • BUG#7819: OnPremise: Timeout with pings
  • BUG#7967: Currency missing
  • BUG#8137: Wrong Sender Order Id on Spanish invoice
  • BUG#8163: Typename missing for Document Type "Other"
  • BUG#8170: OnPremise: Setup failed with new VC++ runtime already installed
  • BUG#8215: Error in Result-Pdf creation with mixed mode pdfs
  • BUG#8229: Some image-based Result-Pdfs do not render the OCRWord-Layer

What's New in V1.10.1

  • US#7455: "Glow effect" in Result-Pdf file can be switched on/off in configuration (default: off)
  • Default for number of processed pages has been increased from 5 to 10

Improvements

  • ISSUE#7640: Invoice Format detection (letter or receipt) has been improved
  • ISSUE#7765: Document Type for Polish Invoices improved

Bug/Issue Fixes

  • BUG#7819: In some special situation the service "ping" ran into timeout
  • BUG#7876: Fixed a 3rd party memory leak by using a new version of the ML.Net library

What's New in V1.10

  • US#7444: Language Polish and region Poland added
  • US#7627: Due Date - beta / custom invoice detail

Improvements

  • Recognition rate improved for: Invoice Date, Delivery Date, Grand Total Amount, Vat Groups
  • Number of processed pages increased to ten
  • Checksum validation has been added to Spanish Vat Ids
  • US#7460: Logging has been improved
  • ISSUE#7661: additional format of German Vat Id
  • ISSUE#7613: Line items improved

Bug/Issue Fixes

  • ISSUE#7484: Sender Order Ids in Line items classified as Spanish Vat Ids
  • BUG#7466: Document Type "Other" not handled correctly
  • ISSUE#4832: Memory Leak in Pdf creation
  • BUG#7619: Contact recognition fails for unknown language
  • ISSUE#7667: Wrong prediction for Delivery Note Id
  • BUG#7727: Exception while pdf creation
  • ISSUE#7622: Error in Line Items

What's New in V1.9.4

  • US#7425: New value "Other" has been added to invoice detail "Document Type"
  • US#7425: Document Format information has been added to invoice
  • US#7423: Performance has been improved significantly
  • US#7460: Logging has been improved

Bug/Issue Fixes

  • BUG#7437: Vat rate format exception
  • BUG#7454: False Positives reduced
  • BUG#7464,7456: Line items model returned internal error

What's New in V1.9

  • US#7339,7341,7344,7358: Invoice details for Spanish Invoices
  • US#7162: Embed OCR textfor scanned invoices in the result pdf
  • US#7163:Deskew pages in scanned invoices in the result pdf
  • US#7266:Draw bounding boxes for all new invoice details in the result pdf

Bug/Issue Fixes

  • BUG#7422: Ensure that there is always only 1 LineItem-Bookmark in the ResultPdf
  • BUG#7400: Pages with minimal text might crash the service
  • BUG#7405: DeliveryNoteIds and ReceiverOrderIds within LineItems
  • BUG#7414: Unit Price inLine Items incorrectly formatted

Deprecated

  • NetTotalAmount - use VatGroups instead
  • VatTotalAmount - use VatGroups instead

What's New in V1.8

  • US#7032: Improved prediction of English invoices
  • US#7052: Introduced separation of sender and receiver UID
  • US#7164: Enable hover effect in results pdf
  • US#7228: Added new detail receiver name, address and improved sender recognitions
  • US#7262: Added new detail German Steuernummer
  • US#7307: Added new detail BIC
  • US#7237: General improvement of AI models for existing details
  • BUG#6752: Net amount and VAT amount are equal in certain cases
  • BUG#7030: Prediction Groups (VAT-Groups) are not marked in the Result-PDF currently
  • ISSUE#7289: Result PDF shows results with just one color instead of 2
  • ISSUE#7314: Sender name missing

What’s New in V1.7.2

  • ISSUE#7310: all components build as x64
  • ISSUE#7312: Performance issues: PdfSharp library removed
  • ISSUE#7347: Logging improved

What’s New in V1.7.1

  • BUG#7252: OCR Worker crashes fixed
  • ISSUE#7275: Proxy Server not used - fixed
  • BUG#7279: Version Property removed

What’s New in V1.7

  • US#7107: Email has been added to Sender Contact
  • US#6962: Quantity has been added to Line Item
  • US#7240: Enable to add prefix to the standard REST-route

Improvements

  • US#7180: Improved recognition rate for Invoice Id
  • US#7181: Improved recognition rate for Invoice Date
  • US#7088: Improved recognition rate for Line Items

Bug/Issue Fixes

  • BUG#7211: Certain Pdf Invoices caused error during interpretation due to encoding error
  • BUG#7238: Authentication Error is not returned for empty APIKEY

What’s New in V1.6.1

  • US#7096: Get additional information for Uids: Sender or Receiver
  • US#7186: Provide session id

Bug/Issue Fixes

  • BUG#7157: VatGroups with empty net amount or vat amount did not include Value property.
  • BUG#7149: Bounding Box was missing for Sender name.
  • BUG#7150: Sender name was always returned, independent from user settings.

What’s New in V1.6

  • US#7037: The recognition rate of Vat Groups has been improved.
  • US#7047: The recognition rate of Sender has been improved, but it is still BETA.

Bug/Issue Fixes

  • BUG#7101: Setup failed due to spaces in python bin path.
  • BUG#7100: Http request over proxy did not work.
  • BUG#7038: OCR crashed in high load situations.

New invoice detail Sender is currently in BETA state

What’s New in V1.5

  • US#6976: The delivery slip number is now extracted from invoices. If there are more than one, all of them will be returned, except they are part of the line items.
  • US#6983: The OCR text result is returned in the BLU DELTA API response. The structure contains the text and additional properties like position, size, bold, etc.
  • US#7029: The BLU DELTA API returns a Http 500 error only in cases with system impact. In other cases an empty prediction is returned.
  • US#7040: It is possible to distinguish different (sub-)customers who are using the same API key, by using an additional SubKey. The new SubKey can be provided additionally to the API Key in the Http header.

Bug/Issue Fixes

  • BUG#7030: Prediction Groups are not marked in the Result Pdf
  • ISSUE#7054: Labes on result Pdf on wrong location

New invoice detail Sender is currently in BETA state

What’s New in V1.4

  • Support for Custom Models
  • Support for Custom Smart Rules

Bug/Issue Fixes

  • US#7016: In the result Pdf all invoice details are marked – not only the requested ones.
  • US#7017: OCR is unable to process certain pdf formats.
  • US#7021: A Pdf document with an unusual image size (e.g. very tall and narrow) can not be processed by the OCR.
  • If a document can not be processed, a http 400 File Format error will be returned instead of a http 500 error.

What’s New in V1.3.x

  • New invoice details (full list):
    InvoiceId, InvoiceDate, GrandTotalAmount, DocumentType, Ibans, UIDs, Currency, ReceiverOrderId, ReceiverOrderDate, SenderOrderId, SenderOrderDate, DeliveryDate, CustomerId, VatGroup (VatRate, VatAmount, NetAmount)
  • Result PDF creation. The API creates a PDF that is enabled for highlighting extracted document details.
  • Extended logging capabilities
  • The performance of invoice analysation and feature creation was improved.
  • Changes: The former parameter flags was renamed to filter. It is now optional. In case it's missing all invoice details for the current user will be returned.

Bug/Issue Fixes

  • #6992: Http 500 error in case empty invoice was delivered to API. Now returns valid result but with empty predictions.
  • #6997: Different prediction results between Online and Onsite API. Now returns toally equal results.
  • #6999: Http 500 error in case no invoice currency could be found. Now returns valid result but with empty currency prediction.
  • #7002: Processing time of very large invoices with big number of pages
  • #6868: OCR fails on certain pdfs

API Endpoint
https://api.bludelta.ai/
Request Content-Types: application/json
Request Custom Header
     X-ApiKey: YOUR_API_KEY

The API Key is used to authenticate and authorize the use of the BLU DELTA API.
If you have not received an API key yet: You can request a free trial from bludelta-support@blumatix.at

e.g. "fmHjlBM+nzRN4VQxgnZx9HdixhYXXXXeqHsx6a3Dso03QNKyXXXXyML0KODbNY9T9mfeFU6jZLv+xeuXDLaHig=="
     X-ApiIdentifier: YOUR_API_IDENTIFIER (optional)

The API Identifier can be used to track the usage of sub-customers (e.g. platforms or partners have again customers and want to track the usage of their customers).
If you need this flexibility then please contact our support team: bludelta-support@blumatix.at

e.g. "partner.customer"
     Attention: Depending on the configuration of your API key,
     you may have to send a predefined identifier here.
Response Content-Types: application/json
Schemes: http, https
Version: 1.15.1



API Json Response (exemplary)

    {
    "DocumentResolution": <integer>,
    "DocumentFormat": <string>,
    "Language": "<string>",
    "InvoiceDetailTypePredictions": <DetectionResponse>[
    {..."TypeName": "DocumentType"...},
    {..."TypeName": "InvoiceId"...},
    {..."TypeName": "SenderOrderId"...},
    {..."TypeName": "CustomerId"...},
    {..."TypeName": "InvoiceDate"...},
    {..."TypeName": "SenderOrderDate"...},
    {..."TypeName": "ReceiverOrderDate"...},
    {..."TypeName": "DeliveryDate"...},
    {..."TypeName": "Iban"...},
    {..."TypeName": "Bic"...},
    {..."TypeName": "SenderVatId"...},
    {..."TypeName": "ReceiverVatId"...},
    {..."TypeName": "UId"...},
    {..."TypeName": "NetTotalAmount"...},
    {..."TypeName": "VatTotalAmount"...},
    {..."TypeName": "GrandTotalAmount"...},
    {..."TypeName": "InvoiceCurrency"...},
    {..."TypeName": "DeliveryNoteId"...},
    {..."TypeName": "ReceiverOrderId"...},
    {..."TypeName": "TaxNumber"...},
    {..."TypeName": "Sender"...},
    {..."TypeName": "IsrReference"...},
    {..."TypeName": "IsrSubscriber"...}],
    {..."TypeName": "KId"...}],
    {..."TypeName": "CompanyRegistrationNumber"...}],
    "PredictionGroups": <DetectionGroupResponse>[
    {
    ...,
    "TypeName": "VatGroup",
    "InvoiceDetailTypePredictions": <DetectionResponse>[
    {..."TypeName": "VatRate"...},
    {..."TypeName": "NetAmount"...},
    {..."TypeName": "VatAmount"...}]
    },
    {
    ...,
    "TypeName": "BankGroup",
    "InvoiceDetailTypePredictions": <DetectionResponse>[
    {..."TypeName": "BankCode"...},
    {..."TypeName": "BankAccount"...},
    },
    {
    ...,
    "TypeName": "DueDateGroup",
    "InvoiceDetailTypePredictions": <DetectionResponse>[
    {..."TypeName": "DueDateDate"...},
    {..."TypeName": "DueDateDuration"...},
    },
    {
    ...,
    "TypeName": "DiscountGroup",
    "InvoiceDetailTypePredictions": <DetectionResponse>[
    {..."TypeName": "DiscountDate"...},
    {..."TypeName": "DiscountDuration"...},
    {..."TypeName": "DiscountPercent"...}]
    }],
    "LineItemTable": <LineItemTableResponse>,
    "Sender": <ContactResponse>,
    "Receiver": <ContactResponse>,
    "Contacts": <List of ContactResponse>,
    "IsQualityOk": <boolean>,
    "ResultPdf": <string>,
    "OcrResult": <string>,
    "DocumentText": <string>,
    "Confidence": <double>,
    "InvoiceState": <integer>
    }

Paths

Extracts invoice features of a provided invoice.

POST /invoicedetail/detect

Extracts invoice features of a provided invoice.

Filter
in formData
integer (int64)

Filter for Invoice details that shall be predicted
flag 'None' will return all available Invoice details for your subscription,
else define the filter by providing a bitmask for the Invoice details that shall be predicted.
e.g. Filter = GrandTotalAmount | Ibans.

Filters:

  • None: 0
  • Sender: 2
  • DeliveryDate: 8
  • GrandTotalAmount: 16
  • InvoiceDate: 64
  • Receiver: 128
  • InvoiceId: 1024
  • DocumentType: 8192
  • Ibans: 16384
  • Bics: 32768
  • LineItems: 65536
  • InvoiceCurrency: 524288
  • DeliveryNoteId: 1048576
  • CustomerId: 2097152
  • TaxNumber: 4194304
  • VatIds: 8388608
  • SenderOrderId: 16777216
  • ReceiverOrderId: 33554432
  • SenderOrderDate: 67108864
  • ReceiverOrderDate: 134217728
  • VatGroup: 536870912
  • BankGroup: 17179869184
  • DueDateGroup: 17592186044416
  • DiscountGroup: 1099511627776
  • IsrReference: 34359738368
  • IsrSubscriber: 35184372088832
  • KId: 70368744177664
  • CompanyRegistrationNumber: 140737488355328
  • Contacts: 281474976710656

Invoice
in formData
string

Invoice (encoded as base64 with padding string) - accepted formats: PDF, JPG, PNG, GIF, TIFF

Format
in formData
integer (int32)

Special Invoice format.
for future use only

  • None: 0
  • EbInterface: 1

PropertyStore
in formData
object

Additional properties that will be used for invoice processing, provided as Key-Value pairs.

CreateResultPdf
in formData
boolean

If this flag is set, the response will contain the sent invoice as pdf-document with marked predictions.

AddOcrResult
in formData
boolean

If this flag is set, the response will contain the OCR result as json string.

AddDocumentText
in formData
boolean

If this flag is set, the response will contain the plain text of the document as detected by the OCR.

Languages
in formData
string

This is an optional parameter to pass all potential languages for the current document as a comma separated list to the internal OCR-Component. Specifying the correct document language (or a small potential set of languages) will reduce failures of the OCR and can improve the quality of the predictions.

Accept
in header
string application/json

Accept Header

Example Request with CURL
In the following example all invoice details are requested for a certain invoice. Therefore, a request.json file has been created. The "Filter" property is set to "None" which means that we want all possible invoice details. The "Invoice" property contains the invoice encoded in Base64.
{
  "Filter": "None",
  "Invoice": "YOUR_INVOICE_IN_BASE64",  
}
curl
curl -vX POST https://api.bludelta.ai/invoicedetail/detect \
  -H 'Content-Type: application/json' \
  -H 'X-ApiKey:YOUR_API_KEY' \
  -d @request.json

Service call successfully finished

400 Bad Request

Invoice format error

401 Unauthorized

Unauthorized. Invalid ApiKey (or invalid ApiIdentifier)

403 Forbidden

Customer is not allowed to make any predictions

500 Internal Server Error

Oops, something broke

Response Content-Types: application/json
Response Example (200 OK)

    {
    "DocumentResolution": "integer (int32)",
    "DocumentFormat": "string",
    "Language": "string",
    "InvoiceDetailTypePredictions": "List",
    "PredictionGroups": "List",
    "FormattedResult": "string",
    "IsQualityOk": "boolean",
    "ResultPdf": "string",
    "OcrResult": "string",
    "DocumentText": "string"
    }

Schema Definitions

Object: object

Object

DetectInvoiceRequest: object

Extracts invoice features of a provided invoice.

Filter: integer (int64)

Filter for Invoice details that shall be predicted
flag 'None' will return all available Invoice details for your subscription,
else define the filter by providing a bitmask for the Invoice details that shall be predicted.
e.g. Filter = GrandTotalAmount | Ibans.

Filters:

  • None: 0
  • Sender: 2
  • DeliveryDate: 8
  • GrandTotalAmount: 16
  • InvoiceDate: 64
  • Receiver: 128
  • InvoiceId: 1024
  • DocumentType: 8192
  • Ibans: 16384
  • Bics: 32768
  • LineItems: 65536
  • InvoiceCurrency: 524288
  • DeliveryNoteId: 1048576
  • CustomerId: 2097152
  • TaxNumber: 4194304
  • VatIds: 8388608
  • SenderOrderId: 16777216
  • ReceiverOrderId: 33554432
  • SenderOrderDate: 67108864
  • ReceiverOrderDate: 134217728
  • VatGroup: 536870912
  • BankGroup: 17179869184
  • DueDateGroup: 17592186044416
  • DiscountGroup: 1099511627776
  • IsrReference: 34359738368
  • IsrSubscriber: 35184372088832
  • KId: 70368744177664
  • CompanyRegistrationNumber: 140737488355328
  • Contacts: 281474976710656

Invoice: string

Invoice (encoded as base64 with padding string) - accepted formats: PDF, JPG, PNG, GIF, TIFF

Format: integer (int32)

Special Invoice format.
for future use only

  • None: 0
  • EbInterface: 1

PropertyStore: Dictionary<String,String>

Additional properties that will be used for invoice processing, provided as Key-Value pairs.

CreateResultPdf: boolean

If this flag is set, the response will contain the sent invoice as pdf-document with marked predictions.

AddOcrResult: boolean

If this flag is set, the response will contain the OCR result as json string.

AddDocumentText: boolean

If this flag is set, the response will contain the plain text of the document as detected by the OCR.

Languages: string

This is an optional parameter to pass all potential languages for the current document as a comma separated list to the internal OCR-Component. Specifying the correct document language (or a small potential set of languages) will reduce failures of the OCR and can improve the quality of the predictions.

Supported languages:

  • de...German
  • en...English
  • es...Spanish
  • pl...Polish
  • it...Italian
  • fr...French
  • cs...Czech
  • sk...Slovakian
  • nl...Dutch
  • nb...Norwegian
  • hr...Croatian
  • tr...Turkish
  • pt...Portuguese

Example
{
  "Filter": "integer (int64)",
  "Invoice": "string",
  "Format": "integer (int32)",
  "PropertyStore": "object",
  "CreateResultPdf": "boolean",
  "AddOcrResult": "boolean"
  "AddDocumentText": "boolean"
  "Languages": "string"
}

Dictionary<String,String>: object

Dictionary<String,String>

Key: "ReceiverVatId" string Value: receiver vat id(s) string

The given receiver Vat id (single id oder comma separated list) is used by the service to split all extracted Vat ids into two groups: receiver Vat ids and sender Vat ids. Whenever an extracted Vat id is found in the list, it will be returned as Vat id and other Vat ids are returned as sender Vat ids. The name of the result is set to ReceiverVatId or SenderVatId respectively.

Key: "SessionLogId" string Value: session id string

The session id is used to add this id to every log entry belonging to this request for easy log file monitoring.

Example
"object"

DetectInvoiceResponse: object

DetectInvoiceResponse

DocumentResolution: integer (int32)

Resolution of the original document in dpi.

DocumentFormat: string

The format of the document which is either "Letter" or "Receipt"

Language: string

The language of the document that was identified by BLU DELTA

InvoiceDetailTypePredictions: DetectionResponse

List of Predictions - One for each predicted invoice detail.

PredictionGroups: DetectionGroupResponse

List of PredictionGroups - One for each predicted invoice detail
e.g. VatGroup, containing predictions for Vat Rate, Net Amount and Vat Amount

Sender: ContactResponse

The sender (biller) of the invoice

Receiver: ContactResponse

The receiver of the invoice

Contacts: List of ContactResponse

For German documents, the list contains all contacts found on the document - including sender and receiver. For all other languages, the list contains only sender and receiver.

LineItemTable: LineItemTableResponse

Table of line items

FormattedResult: string

Special invoice format. (for future use only)

IsQualityOk: boolean

Invoice quality flag. (for future use only)

ResultPdf: string

Result pdf-document with marked predictions (encoded as base64 string).
Will contain an empty string if the pdf could not be created successfully.

OcrResult: OCR Result Schema Definitions

OCR Result (as json string).
Will contain an empty string if the OCR result could not be created successfully.

DocumentText: string

Plain text of the document as detected by the OCR.
Will contain an empty string if the OCR failed.
The escape sequence \r\n (CarriageReturn + LineFeed) is used to signify the end of a line.

Confidence: double

Describes the confidence that the invoice can be auto-processed without human validation.
(-1 = unknown, 0 = validate manually, 1 = autoprocess)

InvoiceState: integer (int32)

Specifies if the response contains all requested data.
The value is built from a bitmask for all tasks which could not successfully
deliver a result.

States:

  • Ok: 0
  • Prediction failed: 1
  • Result pdf failed: 2
  • OCR Result failed: 4
Example: The value 3 means that both, the prediction and the result pdf generation, failed.

Example

    {
    "DocumentResolution": "integer (int32)",
    "DocumentFormat": "string",
    "Language": "string",
    "InvoiceDetailTypePredictions": "List",
    "PredictionGroups": "List",
    "Sender": "ContactResponse",
    "Receiver": "ContactResponse",
    "Contacts": "List of ContactResponse",
    "LineItemTable": "LineItemTableResponse",
    "FormattedResult": "string",
    "IsQualityOk": "boolean",
    "ResultPdf": "string",
    "OcrResult": "string",
    "DocumentText": "string",
    "Confidence": "double",
    "InvoiceState": "integer (int32)"
    }

DetectionResponse: object

DetectionResponse

Type: integer (int64)

Predicted invoice detail
The definition of the actual type values can be found here.

TypeName: string

Name of predicted invoice detail
The definition of the actual name values can be found here.

Note: if specific sender or receiver vat-ids are detected, then vat-id name
values will be overwritten with more specific name values. These values are
listed here:

  • SenderVatId (if the VatId belongs to the sender) or
  • ReceiverVatId (if the VatId belongs to the receiver) or
  • VatId (for others)

Value: string

Predicted value

Formats:

  • GrandTotalAmount: decimal separator '.', no group separator, two decimal digits, e.g. 9.00, 2314.50, -12.99
  • NetAmount: decimal separator '.', no group separator, two decimal digits, e.g. 9.00, 2314.50, -12.99
  • VatAmount: decimal separator '.', no group separator, two decimal digits, e.g. 9.00, 2314.50, -12.99
  • VatRate: decimal separator '.', no group separator, one decimal digits, e.g. 20.0, 19.0, 10.0
  • InvoiceDate: YYYY-MM-DD (ISO 8601)
  • DeliveryDate: YYYY-MM-DD (ISO 8601)
  • SenderOrderDate: YYYY-MM-DD (ISO 8601)
  • ReceiverOrderDate: YYYY-MM-DD (ISO 8601)
  • InvoiceId: string
  • InvoiceCurrency: string
  • CustomerId: string
  • SenderOrderId: string
  • ReceiverOrderId: string
  • DocumentType: 'Invoice', 'CreditMemo' or 'Other'
  • Ibans: string without blanks, comma separated
  • Bics: string without blanks, comma separated
  • VatIds: string without blanks, comma separated
  • DeliveryNoteId: string
  • Sender: string
  • TaxNumber: string
  • BankCode: string
  • BankAccount: string
  • DueDateDate: YYYY-MM-DD (ISO 8601)
  • DueDateDuration: number (days)
  • DiscountDate: YYYY-MM-DD (ISO 8601)
  • DiscountDuration: number (days)
  • DiscountPercent: decimal separator '.', no group separator,
  • IsrReference: digits
  • IsrSubscriber: digits
  • KId: digits
  • CompanyRegistrationNumber: string

Score: double (double)

Scored probability. Value between zero and one.

X: integer (int32)

X-Position of prediction according to the document resolution

Y: integer (int32)

Y-Position of prediction according to the document resolution

Width: integer (int32)

Width of prediction according to the document resolution

Height: integer (int32)

Height of prediction according to the document resolution

Confidence: double (double)

Describes the confidence that this invoice detail can be auto-processed without human validation.
(-1 = unknown, 0 = validate manually, 1 = autoprocess)

Example
{
  "Type": "int (int64)",
  "TypeName": "string",
  "Value": "string",
  "Score": "double (double)",
  "X": "integer (int32)",
  "Y": "integer (int32)",
  "Width": "integer (int32)",
  "Height": "integer (int32)",
  "Confidence": "double (double)"
}

DetectionGroupResponse: object

DetectionGroupResponse

Type: integer (int64)

Predicted invoice detail

TypeName: string

Predicted invoice detail

InvoiceDetailTypePredictions: DetectionResponse

List of Predictions - One for each predicted invoice detail.

Example
{
  "Type": "int (int64)",
  "TypeName": "string",
  "InvoiceDetailTypePredictions": "List"
}

ContactResponse: object

ContactResponse

Name: DetailResponse

Name of the contact

Address: AddressResponse

Address of the contact

Score: double (double)

Scored probability. Value between zero and one.

WebsiteUrl: DetailResponse

List of websites of the contact

Email: DetailResponse

List of e-mail addresses of the contact

Phone: DetailResponse

Phone number of the contact

Fax: DetailResponse

Fax number of the contact

Example
{
  "Name": "DetailResponse",
  "Address": "AddressResponse",
  "Score": "double (double)",
  "WebsiteUrl": "List",
  "Email": "List",
  "Phone": "DetailResponse",
  "Fax": "DetailResponse"
}

AddressResponse: object

AddressResponse

Street: DetailResponse

Street (incl. street number)

ZipCode: DetailResponse

Zip code / postal code

City: DetailResponse

City

Country: DetailResponse

Country (ISO 3166-1)

X: integer (int32)

X-Position according to the document resolution

Y: integer (int32)

Y-Position according to the document resolution

Width: integer (int32)

Width according to the document resolution

Height: integer (int32)

Height according to the document resolution

Example
{
  "Street": "DetailResponse",
  "ZipCode": "DetailResponse",
  "City": "DetailResponse",
  "Country": "DetailResponse",
  "X": "integer (int32)",
  "Y": "integer (int32)",
  "Width": "integer (int32)",
  "Height": "integer (int32)"
}

LineItemTableResponse: object

LineItemTableResponse

LineItems: LineItemResponse

List of predicted line items

LineItemResponse
Example
{
  "LineItems": "List"
}

LineItemResponse: object

LineItemResponse

ItemId: DetailResponse

Line item id

PositionNumber: integer (int32)

Sequential number for each predicted line item, starting at 1

Description: DetailResponse

Line description

Quantity: DetailResponse

Line quantity

UnitPrice: DetailResponse

Line unit price

TotalAmount: DetailResponse

Line total amount

OrderId: DetailResponse

Line order id

DeliveryId: DetailResponse

Line delivery id

Score: double (double)

Scored probability. Value between zero and one.

X: integer (int32)

X-Position of prediction according to the document resolution

Y: integer (int32)

Y-Position of prediction according to the document resolution

Width: integer (int32)

Width of prediction according to the document resolution

Height: integer (int32)

Height of prediction according to the document resolution

Example

    {
    "ItemId": "DetailResponse",
    "PositionNumber": "integer (int32)",
    "Description": "DetailResponse",
    "Quantity": "DetailResponse",
    "UnitPrice": "DetailResponse",
    "TotalAmount": "DetailResponse",
    "OrderId": "DetailResponse",
    "DeliveryId": "DetailResponse",
    "Score": "double (double)",
    "X": "integer (int32)",
    "Y": "integer (int32)",
    "Width": "integer (int32)",
    "Height": "integer (int32)"
    }

DetailResponse: object

DetailResponse

Name: string

Name of predicted detail

Value: string

Predicted value

Score: double (double)

Scored probability. Value between zero and one.

X: integer (int32)

X-Position of prediction according to the document resolution

Y: integer (int32)

Y-Position of prediction according to the document resolution

Width: integer (int32)

Width of prediction according to the document resolution

Height: integer (int32)

Height of prediction according to the document resolution

Example
{
  "Name": "string",
  "Text": "string",
  "Value": "string",
  "Score": "double (double)",
  "X": "integer (int32)",
  "Y": "integer (int32)",
  "Width": "integer (int32)",
  "Height": "integer (int32)"
}