Invoice webhook
The invoice webhook automatically sends invoice related data from eCargo to your system.
It automatically sends the data based on a set of configurable rules e.g. when an invoice for a specific customer is approved.
To subscribe to this webhook please contact eCargo support.
Authorisation and security
You will need to provide us with your HTTPS URL and credentials. Webhooks support basic authentication, so you will need to respond to unauthenticated requests with a WWW-Authenticate: Basic
header.
Response codes
When the request is posted to the subscriber’s destination endpoint, the webhook’s behaviour differs depending on the HTTP status code returned.
Status code class | Behaviour |
---|---|
2xx success | Will complete request processsing. Marked as successfully sent in eCargo. |
4xx client errors | Will not retry sending the request. Marked as failed to send in eCargo. |
5xx server errors | Will retry sending the request up to a maximum of 13 attempts. Retransmissions are spaced out using a backoff algorithm. Once all attempts fail, the message is marked as failed to send in eCargo. |
Messages will be sent sequentially to the endpoint to preserve the order of events. This means that continued 5xx errors will prevent further messages from being sent until the error is resolved or the retry limit is reached.
XML schema definition
The intention of this file is to allow third parties to conveniently generate code based on this schema. Do not use it to validate the consignment webhook content.
In the future additional elements may be added and any new additions should not be treated as a breaking change.
An XSD can be downloaded from here.
Basic structure
The invoice webhook message is a well formed XML document. It conforms to the specifications mentioned in the XML specification.
The basic structure of the message consists of the XML declaration at the top, followed by the Invoice
section, which contains three major sections: InvoiceHeader
, InvoiceLines
and InvoiceTotals
.
<?xml version="1.0"?>
<Invoice>
<InvoiceHeader>
...
</InvoiceHeader>
<InvoiceLines>
...
</InvoiceLines>
<InvoiceTotals>
...
</InvoiceTotals>
</Invoice>
Invoice header
The invoice header element contains general information about the invoice.
Field | Format | Description |
---|---|---|
InvoiceNumber | Text | Invoice identifier |
InvoiceIssueDate | Invoice date | The date the invoice is issued |
Supplier | Text | The issuer of the invoice |
Recipient | Text | The recipient of the invoice |
InvoiceType | Invoice type | The catergory of invoice |
InvoiceStatus | Invoice status | The state the invoice is in |
ChargeCode | Text | Optional value specified by supplier |
ExternalReference | Text | Optional value specified by supplier |
Example
<Invoice>
<InvoiceHeader>
<InvoiceNumber>12345</InvoiceNumber>
<InvoiceIssueDate>2020-10-01</InvoiceIssueDate>
<Supplier>
<Name>ABC</Name>
</Supplier>
<Recipient>
<Name>XYZ</Name>
</Recipient>
<InvoiceType>Credit note</InvoiceType>
<InvoiceStatus>Approved</InvoiceStatus>
<ChargeCode>RoadFreight</ChargeCode>
<ExternalReference>JKL1234</ExternalReference>
</InvoiceHeader>
...
</Invoice>
Invoice lines
The invoice lines element contains one or more InvoiceLine
elements that detail individual charges on the invoice.
Invoice line
An invoice line element contains details about a specific charge on the invoice.
Note 1: The ConsignmentDetails
section is optional. In the future eCargo will support line items for charges that are not associated with a consignment.
Field | Format | Description |
---|---|---|
ChargeType | Charge type | Charge type information for this invoice line. |
ConsignmentDetails | Consignment details | Optional information about the invoiced consignment |
TaxRateTypeName | Tax rate type name | A description of the tax rate type |
RatePercent | Decimal(4) | Tax rate as a percentage |
AmountExcludingTax | Money | Amount invoiced before tax is added |
Example
<Invoice>
...
<InvoiceLines>
<InvoiceLine>
<ChargeType>
<ChargeTypeCode>A charge type code</ChargeTypeCode>
<CategoryCode>A category code</CategoryCode>
</ChargeType>
<ConsignmentDetails>
<ConsignmentId>987654321</ConsignmentId>
<ConsignmentNumber>CONSIGNMENT1234</ConsignmentNumber>
</ConsignmentDetails>
<TaxRate>
<TaxRateTypeName>GST New Zealand</TaxRateTypeName>
<RatePercent>15.0000</RatePercent>
</TaxRate>
<AmountExcludingTax>
<Value>10</Value>
<Currency>NZD</Currency>
</AmountExcludingTax>
</InvoiceLine>
</InvoiceLines>
...
Invoice totals
Contains a breakdown of the invoice totals.
Field | Format | Description |
---|---|---|
TotalAmountExcludingTax | Money | Total invoice amount before tax is added |
TotalTaxAmount | Money | Total amount of tax |
TotalAmountIncludingTax | Money | Total invoice amount with tax |
Example
<Invoice>
...
<InvoiceTotals>
<TotalAmountExcludingTax>
<Value>110.10</Value>
<Currency>NZD</Currency>
</TotalAmountExcludingTax>
<TotalTaxAmount>
<Value>11.01</Value>
<Currency>NZD</Currency>
</TotalTaxAmount>
<TotalAmountIncludingTax>
<Value>121.11</Value>
<Currency>NZD</Currency>
</TotalAmountIncludingTax>
</InvoiceTotals>
</Invoice>
Invoice type
There are three different invoice types in eCargo: invoice, credit note and debit note.
There are two common scenarios where credit and/or debit notes are used in eCargo:
- A credit note may be issued when a customer returns the goods they purchased.
- An adjustment was made to the invoice. In this case a credit is issued and then the adjustment is issued as a debit note.
Value | Description |
---|---|
Invoice | A goods or services invoice |
Credit note | A credit for the recipient |
Debit note | A debit for the recipient |
Example
<InvoiceType>Invoice</InvoiceType>
Invoice status
There are two different invoice statuses exposed by the invoice webhook: approved and paid. There are other invoice statuses visible in eCargo but these are not supported by the invoice webhook.
Value | Description |
---|---|
Approved | The invoice has been approved by the sender and issued to the recipient but not yet paid. |
Paid | The invoice has been issued and paid by the recipient. |
Example
<InvoiceStatus>Approved</InvoiceStatus>
Charge type
Contains information about the charge type associated with a single invoice line.
Field | Format | Description |
---|---|---|
ChargeTypeCode | Text | The charge type code. |
CategoryCode | Text | Category that the charge type belongs to. |
Example
<ChargeType>
<ChargeTypeCode>A charge type code</ChargeTypeCode>
<CategoryCode>A category code</CategoryCode>
</ChargeType>
Consignment details
Contains information about the consignment associated with a single invoice line.
Field | Format | Description |
---|---|---|
ConsignmentId | Integer | Unique numeric invoiced consignment identifier |
ConsignmentNumber | Text | Alphanumeric invoiced consignment identifier, this number is not guaranteed to be unique in eCargo |
Example
<ConsignmentDetails>
<ConsignmentNumber>ABC1234</ConsignmentNumber>
<ConsignmentId>987654321</ConsignmentId>
</ConsignmentDetails>
Tax rate type name
Value | Description |
---|---|
Zero rated | New Zealand exempt from GST |
GST New Zealand | New Zealand goods and services tax |
GST Australia | Australian goods and services tax |
Example
<TaxRateTypeName>GST New Zealand</TaxRateTypeName>
Data types
Text
Text fields consists of alphanumeric characters and punctuation characters.
Example
<ChargeCode>Our customer</ChargeCode>
Invoice date
This is the date on the invoice and has no time zone associated with it.
The standard format is yyyy-MM-dd
.
Section | Description |
---|---|
- | Literal character ‘-’, used as a separator within the date text |
yyyy | The year as a 4 digit number |
MM | The month of the year from 01 through to 12 |
dd | The day of the month from 01 through to 31 |
Example
<InvoiceIssueDate>2020-11-18</InvoiceIssueDate>
Decimal
Decimal values are numeric values with a whole and the specified number of decimal digits separated by the .
decimal separator.
Example
Decimal(2)
<Value>8000.00</Value>
<Value>700.56</Value>
<Value>0.87</Value>
Decimal(4)
<Value>8000.0000</Value>
<Value>700.5632</Value>
<Value>0.8700</Value>
Integer
Integer values are whole numbers without the decimal component.
Example
<ConsignmentId>987654321</Consignment>
Money
Money fields consists of a decimal Value
field and two decimal places and a Currency
field which contains an ISO 4217 currency code.
Note: This describes a pattern associated with Money rather than a type. Subsequently a parent element named Money
surrounding these fields is not outputted.
Field | Format | Description |
---|---|---|
Value | Decimal(2) | Money amount |
Currency | Text | ISO 4217 currency code |
Example
<TotalAmountIncludingTax>
<Value>121.11</Value>
<Currency>NZD</Currency>
</TotalAmountIncludingTax>