Submit Invoice
Integration point URL
- URL:
<ECBIntegrationAPIUrl>/Invoice/Submit - HTTP METHOD:
POST - URL Example:
https://sandbox.scalepoint.com/ecx/host/api/integration/v1/Invoice/Submit
Request structure
- Schema:
SubmitInvoiceRequest.schema.json - Example:
SubmitInvoiceRequest.example.json
Root object
| Property | Description |
|---|---|
securityToken* | Pre-shared secret string key that is used to authenticate SPC and ECB to each other |
timestamp* | Message generation UTC date/time. Should be in ISO 8601 format without time zone. Note: Can be used to restore messages original order (per claim) – due to network/server errors it’s not guaranteed that messages will arrive in the order they were generated |
payload* | Payload object with integration endpoint specific data |
Payload object
| Property | Description |
|---|---|
claim* | Claim object |
invoice* | Invoice object |
binary** | Binary object (required only when invoice not provided) |
service | Service object |
Claim object
| Property | Description |
|---|---|
id* | Claim unique identifier in ECB |
policy.insuranceCompany.alias* | Insurance company alias in ECB application |
Invoice object
| Property | Description |
|---|---|
responsibleUserLogin* | User login of SPC employee that is responsible for invoice. Also used to identify specific service partner company in SPC organization Note: List of all users in SPC organization can be obtained using Damage Notification integration points. Those point are described in a separate specification, please contact Scalepoint to obtain it. |
responsibleUserFullName* | User full name of SPC employee that is responsible for invoice. |
number | Invoice number. Could be empty if dry-run option is used for validating pre-invoice. Invoice number is required to submit real invoice. Invoice number is unique independently from the invoice and expense types. Max length: 50 |
invoiceIdentifier | Payment reference. InvoiceIdentifier object. |
date* | Invoice UTC date/time. Should be in ISO 8601 format without time zone. |
dueDate | Invoice UTC due date/time. Should be in ISO 8601 format without time zone. |
expenseType* | Expense type identifier. Possible values are: “Invoice” - shall be used for “Repair” and “DamageService” invoice types. “CreditNote”, “ClaimantOwnWork”, “PaymentOnAccountInvoice”, “CashCompensation” – shall be used with “None” invoice type. Note: Only unrelated Credit notes (CN) could be submitted. Related CN are not supported. To submit related CN first submit unrelated draft and then follow to ECB, specify related invoice manually and submit CN. |
invoiceType* | Invoice type identifier. Possible values are: “None”, “Repair”, “DamageService” |
isDraft* | “true” to save invoice as draft, “false” to submit invoice. Note: some insurance companies can disable ability to submit full invoice. In such case this field is also ignored and draft invoice is always created. |
groups | Collection of Invoice Group objects |
items | Collection of Invoice Item objects (redundant when groups are available) |
paymentOnAccountDeduction* | Payment on account deduction amount (ex. VAT) Note: ECB validates that POA deduction does not exceed POA balance that is calculated in ECB. |
paymentOnAccountDeductionVat* | Payment on account deduction VAT amount |
subtotal* | Invoice subtotal amount |
vat* | Invoice VAT amount |
total* | Invoice total amount |
issuerName* | Issuer name. Max length: 150 |
issuerEmail* | Issuer email. Max length: 320 |
issuerFaxNumber | Issuer fax number. Max length: 255 |
issuerPhoneNumber* | Issuer phone number. Max length: 255 |
issuerAddress* | Address object |
issuerCvrNumber* | Issuer CVR number. Max length: 20 |
issuerGiro | Issuer Giro. Max length: 20 |
issuerBankBranchNumber | Issuer bank branch number. Max length: 4 |
issuerAccountNumber | Issuer account number. Max length: 20 |
description | Invoice free-text description for claimant own work |
invoiceRemark | Extra information related to invoice – free text area |
files | Collection of File objects |
subitems | Subitem collection of Invoice Item objects |
InvoiceIdentifier object
Only one of the properties must be supplied.
| Property | Description |
|---|---|
fik | Danish payment reference. Fik object |
kid | Norwegian payment reference number. Min length: 2 digits. Max length: 25 digits. |
Fik object
| Property | Description |
|---|---|
type* | Payment type code. Possible values: 71, 73, 75 |
identifier* | Contains customer number (8 digits) and invoice number (6 digits). Strict length: 15 (plus control digit) |
creditorNumber* | Creditor number. Strict length: 8 digits. |
Invoice Item object
| Property | Description |
|---|---|
title* | Item title |
category* | Item Category identifier Supported values are: "Wages", "Materials", "Equipment", "Subcontractor", "Claimant", "Other", "EquipmentInsurance", "SubcontractorAdmin", "EnvironmentAdditional" |
unit* | Item Unit Of Measure identifier Supported values are: "Pcs", "Hours", "Days", "Kilograms", "Liters", "Meters", "SquareMeters", "CubicMeters", "Lbm", "Sum", "Tonnes", "Bags", "Kilometers", "CubicMetersDays", "None" |
amount* | Amount of units |
unitPrice* | Item unit price (ex. VAT) |
vat* | VAT amount |
externalCode | Item code from external system |
externalId | Product identifier from external system |
externalSource | Item external system source |
fulfilledBy** | Who fulfills item Supported values are: "MyCompany", "Subcontractor", "Claimant" (required only when category not provided) |
type** | Item type Supported values are: "Service", "Materials", "Equipment", "EnvironmentalFee", "Dehumidification", "Other" (required only when category not provided) |
Address object
| Property | Description |
|---|---|
street* | Street. Max length: 1000 |
street2 | Street second line. Max length: 1000 |
postalCode* | Postal code. Min length: 3, Max length: 10 |
city* | City. Max length: 255 |
country* | Country ISO code Example: “DK”, “NO”, “SE” |
File object
| Property | Description |
|---|---|
name* | Full file name with proper extension ie. file.docx, file.pdf |
mimeType* | File MIME type. For example, “image/jpeg”, “text/html” |
Size | Original file size in bytes, before Base64 encoding |
description | Free text file description |
content* | Base64-encoded file content |
Report Group object
| Property | Description |
|---|---|
name* | Group name |
items | Collection of Invoice Item |
Binary object
| Property | Description |
|---|---|
name* | File name |
responsibleUserLogin* | User login of SPC employee that is responsible for invoice. Also used to identify specific service partner company in SPC organization Note: List of all users in SPC organization can be obtained using Damage Notification integration points. Those point are described |
mimeType* | File MIME type. Supported values are: "application/vnd.oioubl+xml" |
content* | Base64-encoded file content |
Service object
| Property | Description |
|---|---|
orderNumber | Order number of a service that the invoice is related to |
Response structure
- Schema:
SubmitInvoiceResponse.schema.json - Example:
SubmitInvoiceResponse.example.json
Root object
| Property | Description |
|---|---|
success* | Boolean flag representing if request is processed successfully |
errorDescription | Description of errors, if any |
payload | Payload object with integration endpoint specific data |
Payload object
| Property | Description |
|---|---|
invoice.url* | URL to complete invoice submission in ECB in case when draft invoice was created, otherwise URL to view invoice in ECB |
invoice.status* | Invoice status Possible values are: “Proposed”, “Canceled”, “Obsolete”, “Draft”, “Settled” |
Implementation notes
If by some reason ECB fails to submit invoice then it always tries to save report as draft instead and report back “Draft” status and URL to complete invoice in ECB.
Some insurance companies can restrict Service Partner to submit full invoice. In this case Service Partner is able to create draft invoice only.
Duplicate requests handling
If ECB claim with ID payload.claim.id already contains invoice with number equal to payload.invoice.number then no new invoices will be created and response with existing invoice URL and status will be sent back.
Last updated on