Accounting Automation - Invoices

Send and receive freight / services invoices.

NameDescription
RootChain.io schema for a freight / services invoice.
PartyRepresents a named party on an invoice.
PartyIdentifierA code and context that can be used to uniquely identify a party.
PhoneNumberA phone number and type object.
EmailAddressAn email address and type object.
InvoiceAmountAn monetary amount that appears on the invoice in the billing currency.
ChargeAmountAn monetary amount on the invoice line representing an alternate amount that is not the issuer's amount or the invoice amount. Typically, this will represent charges carried through from another company or division and may represent a currency different than the invoice's currency or the issuer's accounting currency. This data is present primarily for informational or auditing purposes, such as when the charge represents an amount quoted at origin in a different currency and then must be presented in the invoicing currency.
AccountingAmountA monetary amount that is associated with the invoice amount in an alternate currency.
CustomPropertiesAn object an input converter can utilize to pass any custom data back into a flow that can potentially be utilized by an output converter.
InvoiceLineAn itemized breakdown of all the charges on the invoice.
LocationA unique location.
UnLocodeA location representing a UN location code.
AirPortA location representing an airport.
AddressA location representing a street address.
Weight
Volume
MasterBillJobA job data set representing cargo moved under a master bill of lading.
HouseBillJobA job data set representing cargo moved under a house bill of lading.
DocumentA document / file that is associated with the invoice.
Root_payment_termsThe agreed upon conditions for when the invoice is due and any discounts that may be provided for early repayment.
Party_contactA point of contact at the party.
MasterBillJob_containers
HouseBillJob_containers
HouseBillJob_commercial_invoices
HouseBillJob_purchase_orders
NameData TypeDescriptionRequired
accounting_system_identifierStringThe 'primary key' uniquely identifying the invoice in the issuer's accounting system. For some systems, this may be the same as the invoice_number.YES
transaction_typeStringIdentifies the type of accounting transaction the invoice represents. This property is determined from the point of view of what party's accounting system the accounting_system_identifier property relates to. If the identifier points to an accounts_receivable in that system, then this transaction_type should reflect that. Allowed values: accounts_receivable, accounts_payable.YES
credit_memoBooleanIf true, then the invoice represents a credit memo. Amounts on a credit memo should always be negative. Amounts on a standard invoice, regardless of the transaction_type, should always be positive.
invoice_numberStringAn external identifier for the invoice. Typically, the invoice number is either unique accross the entire accounting system or unique per debtor.YES
statusStringIndicates the current status of the invoice. Allowed values: draft, open, paid, voided.
invoice_dateStringThe date that is the basis for all invoice aging purposes such as the due date and any terms based discounts.
issued_dateStringThe date the invoice was presented to the receiving party.
due_dateStringThe date the debtor must pay the creditor in full.
posted_dateStringThe date the invoice was posted to the accounting system's ledger.
payment_termsRoot_payment_termsThe agreed upon conditions for when the invoice is due and any discounts that may be provided for early repayment.
issued_byPartyThe party that issued the invoice.
creditorPartyThe party that has provided goods or services and is owed money by the debtor.
debtorPartyThe party that incurs the liability for invoice payment.
debtor_referenceStringA reference number that is used by the debtor to identify the invoice. This may be a PO number or some other number the debtor relays to the issuer to include on the invoice.
creditor_referenceStringAn additional reference number that is used by the debtor. This may sometimes be the job number, masterbill, or an alternate accounting reference.
invoice_descriptionStringA description of the services rendered and covered by the invoice.
memoStringAn additional text area used for conveying notes about the invoice. This may include text about late payment penalties, contact information, plain text terms or any other information.
tax_rateDecimalThe decimal percentage tax rate that applies to the invoice. 0.2 = 2%
tax_rate_codeStringThe accounting system's native code for identifying the applicable tax rate.
invoice_amountInvoiceAmountYES
accounting_system_amountAccountingAmount
criticalityStringA code identifying the payment criticality associated with the invoice.
company_codeStringThe accounting system's native code for identifying which internal company issued the invoice.
department_codeStringThe accounting system's native code for identifying which internal department / division issued the invoice.
branch_codeStringThe accounting system's native code for identifying which internal branch issued the invoice.
job_identifierStringInvoices that are issued for a single job (shipment, customs declaration, linehaul, etc) can be linked to that job data inside this document through this property. Invoices that are associated with multiple jobs should utilize the job_identifier property on the invoice lines. For invoices that do not span multiple jobs, the line's job_identifier can be left blank and the invoice's job_identifier can be utilized as the sole source of job links.
custom_propertiesCustomProperties
linesArray<InvoiceLine>An itemized breakdown of all the charges on the invoice.
jobsArray<MasterBillJob | HouseBillJob>Any job that is linked in some manner to the invoice. The actual linkages from invoices or lines are represented via the job_identifier properties on the Invoice and InvoiceLine schemas.
documentsArray<Document>Any invoice documents / files associated with the invoice.
created_atDateTimeThe date this record was created.
updated_atDateTimeThe date this record was updated.
NameData TypeDescriptionRequired
identifiersArray<PartyIdentifier>An array of all applicable identifiers that can be used to identify the party.
nameStringThe entity's name.
address_1StringThe address' street number and name.
address_2StringThe address' secondary address information.
cityStringThe address' city component.
country_subdivisionStringThe country specific subdivision code. This could represent a county, province, state, etc. In order to maximize interoperability, you should utilize the ISO 3166-2 country subdivision identifiers when providing this data.
countryStringThe address' 2 character ISO-3166-2 country Code.
postal_codeStringThe unique postal code identifier for the address.
contactParty_contactA point of contact at the party.
custom_propertiesCustomProperties
NameData TypeDescriptionRequired
codeStringThe identifier codeYES
code_typeStringThe type of data that the identifier code represents. Allowed values: accounting_system_external_identifier, tax_id, iata, scac, legal_entity_id, duns.YES
code_countryStringThe 2 character ISO-3166-2 country code that the id code was issued in / by.
NameData TypeDescriptionRequired
phone_typeStringThe type of phone number. Allowed values: main, mobile, work, home, fax, other.YES
phone_numberStringThe actual phone number. When at all possible, to increase interoperability, phone numbers should be formatted according to RFC3966. Also see libphonenumber when parsing phone numbers.YES
NameData TypeDescriptionRequired
email_typeStringThe type of email address. Allowed values: main, work, personal, other.YES
email_addressStringThe email addressYES
NameData TypeDescriptionRequired
totalDecimalThe total amount including taxes/vat.YES
currencyStringThe ISO 4217 currency code indicating the currency the amount is billed in.YES
subtotalDecimalThe invoice amount without tax/vat.
total_taxDecimalThe tax/vat amount associated with the invoice amount.
NameData TypeDescriptionRequired
totalDecimalThe total amount for the charge.YES
currencyStringThe ISO 4217 currency code indicating the currency the charge represents.YES
subtotalDecimalThe invoice amount without tax/vat.
total_taxDecimalThe tax/vat amount associated with the invoice amount.
exchange_rateDecimalThe exchange rate representing the conversion of this object's total to the invoice amount's total. The rate is represented as a decimal percentage (.ie 100% = 1.0). The conversion formula is simply this object's total * exchange_rate = invoice_amount.total.
NameData TypeDescriptionRequired
totalDecimalThe total amount including taxes/vat.YES
currencyStringThe ISO 4217 currency code indicating the currency the amount is billed in.YES
subtotalDecimalThe invoice amount without tax/vat.
total_taxDecimalThe tax/vat amount associated with the invoice amount.
exchange_rateDecimalThe exchange rate representing the conversion of this object's total to the invoice amount's total. The rate is represented as a decimal percentage (.ie 100% = 1.0). The conversion formula is simply this object's total * exchange_rate = invoice_amount.total.YES
NameData TypeDescriptionRequired
NameData TypeDescriptionRequired
line_identifierStringA value that uniquely identifies the invoice line. This may be used to convey a primary key for some systems while for others it can also just be a numeric counter.
line_numberDecimalA line number that can be used to sort the invoice lines in the correct presentation order. The number must be greater than 0.
charge_codeStringA code used by the issuer's accounting system to identify the goods or service associated with the charge.YES
charge_classificationStringA code used by the issuer's accounting system that classifies the type of charge.
descriptionStringA description of the goods or services associated with the line.
quantityDecimalThe number of units being billed on the line. This may represent the number of containers, house bills, documents. It may also represent weights or distances.
unit_of_measureStringA code used by the issuer's accounting system identifying the singular unit associated with the line. This would typically be something like 'container', 'house bill', 'kilogram', 'mile', 'pieces', etc
units_per_unit_of_measureDecimalThe number of unit_of_measure units that comprise a single billing unit. For example, given a charge description of "$100 per 1000 kilograms". The units_per_unit_of_measure value would be 1000.
unit_priceDecimalThe per unit cost, in the invoice_amount.currency, of a single billing unit. For flat rate charges, unit_price * quantity = amount. For per unit charges, the calculation is roughly (quantity / units_per_unit_of_measure) * unit_price.
tax_rateDecimalThe decimal percentage tax rate that applies to the invoice line. 0.2 = 2%
tax_rate_codeStringThe accounting system's native code for identifying the applicable tax rate.
invoice_amountInvoiceAmountYES
accounting_system_amountAccountingAmount
charge_amountChargeAmount
department_codeStringThe accounting system's native code for identifying which internal department / division issued the charge. This may differ from the overall invoice's department code in cases when a customer is issued a single invoice that consitutues charges spanning multiple departments, like freight, customs clearance and local pickup / delivery charges.
branch_codeStringThe accounting system's native code for identifying which internal branch issued the charge. This may differ from the overall invoice's department code in cases when a customer is issued a single invoice that consitutues charges spanning multiple departments, like freight, customs clearance and local pickup / delivery charges.
job_identifierStringThe job this invoice line is linked with. For invoices that do not span multiple jobs, the line's job_identifier can be left blank and the invoice's job_identifier can be utilized as the sole source of job links.
custom_propertiesCustomProperties
NameData TypeDescriptionRequired
NameData TypeDescriptionRequired
typeStringA location type identifier Allowed values: unlocode.YES
unlocodeStringThe UN/Locode identifier for the sea port.YES
unlocode_descriptionStringA free text description of the UN/Locode.
NameData TypeDescriptionRequired
typeStringA location type identifier Allowed values: airport.YES
iata_codeStringThe IATA airport location identifier.YES
iata_code_descriptionStringA free text description of the IATA Code.
unlocodeStringThe UN/Locode identifier correlated with the IATA code.
NameData TypeDescriptionRequired
typeStringA location type identifier. Allowed values: address.YES
nameStringA name for the address. Typically the name of the business located at the address.
address_1StringThe address' street number and name.YES
address_2StringThe address' secondary address information.
cityStringThe address' city component.YES
country_subdivisionStringThe country specific subdivision code. This could represent a county, province, state, etc. In order to maximize interoperability, you should utilize the ISO 3166-2 country subdivision identifiers when providing this data.
countryStringThe address' 2 character ISO-3166-2 country Code.YES
postal_codeStringThe unique postal code identifier for the address.
unlocodeStringA UN/Locode identifier correlated with the address.
NameData TypeDescriptionRequired
amountDecimalThe numeric weight amountYES
unitStringThe unit of measure associated with the amount property. tonne = Metric Tonne (1,000 kilograms), ton = Imperial Tonne (1,000 pounds) Allowed values: kilogram, tonne, pound, ton.YES
NameData TypeDescriptionRequired
amountDecimalThe numeric volume amountYES
unitStringThe unit of measure associated with the amount property. gallon - US liquid gallon (3.785411784 litres), imperial_gallon = UK gallon (4.54609 litres) Allowed values: cubic_meter, cubic_foot, liter, gallon, imperial_gallon.YES
NameData TypeDescriptionRequired
job_typeStringAn indicator of the type of job being represented. Allowed values: master_bill_of_lading.YES
job_identifierStringThe 'primary key' uniquely identifying the job in the issuer's accounting / tms system. For some systems, this may be the same as the job_reference.YES
job_referenceStringA 'natural key' identifying the job in the issuer's accounting / tms system. This will typically be a more user friendly variant of the job_identifier. While a job_identifier can potentially be an unrelated id like a guid or numeric database id, the job_reference will typically represent a value that is presented to users to identify the job.YES
transport_modeStringThe primary means of transport of the goods on their journey. Allowed values: sea, air, road, rail, sea_air, air_sea, inland_waterway, courier, rail_sea, rail_air, rail_road.
master_bill_of_ladingStringThe master bill of lading number the carrier has assigned to this shipment.
vessel_nameStringThe name of the vessel associated with the job.
imo_numberStringThe International Maritime Organization (IMO) number of the ocean vessel. This should be the 7 digit number only.
voyage_numberStringThe voyage number associated with the job. This can represent an ocean vessel's voyage number, a flight number or any other number that identifies the voyage routing.
carrierPartyThe party responsible for physically transporting the goods on the job.
origin_agentPartyThe freight forwarder facilitating the export process.
destination_agentPartyThe freight forwarder facilitating the import process.
consignorPartyThe party sending a shipment. May also be referred to as the sender, shipper or exporter. This represents the actual shipper party named on the master bill.
consigneePartyThe party financially responsible for receipt of a shipment. Typically, but not always, the consignee is the receiver of the shipment as well as the importer of record. This represents the actual consignee party named on the master bill.
customerPartyThe customer that is contracting the forwarder to move the goods.
pickupAddressThe physical original point of the shipment where the goods are retrieved from.
place_of_receiptUnLocode | AirPortThe location where goods are handed over to the carrier by the consignor or their agent.
port_of_loadingUnLocode | AirPortThe port where goods are loaded by the carrier on to the vessel.
port_of_dischargeUnLocode | AirPortThe port where goods are offloaded from the vessel by the carrier.
place_of_deliveryUnLocode | AirPortThe location where goods are handed over from the carrier to the consignee or their agent.
deliveryAddressThe physical destination point of the shipment where the goods are sent to.
gross_weightWeightThe gross weight of goods on the job.
chargeable_weightWeightThe chargeable weight of goods on the job.
volumeVolumeThe total volume of the goods on the job.
estimated_pickup_dateDateTimeThe estimated date the goods will be picked up from the origin point.
pickup_dateDateTimeThe actual date the goods were picked up from the origin point.
estimated_departure_dateDateTimeThe estimated date the goods will depart from the port of loading.
departure_dateDateTimeThe actual date the goods departed from the port of loading.
estimated_arrival_dateDateTimeThe estimated date the goods will arrive at the port of discharge.
arrival_dateDateTimeThe actual date the goods arrived at the port of discharge.
estimated_delivery_dateDateTimeThe estimated date the goods will be delivered.
delivery_dateDateTimeThe actual date the goods were delivered.
freight_payment_termsStringThe freight terms of payment indicating the party responsible for freight charges. Allowed values: collect, prepaid, third_party.
containerization_typeStringThe container load type used for the job. Allowed values: fcl, lcl, ftl, ltl.
containersArray<MasterBillJob_containers>All containers associated with the job.
house_bills_of_ladingArray<HouseBillJob>All house bill jobs moving under the same master bill.
custom_propertiesCustomProperties
NameData TypeDescriptionRequired
job_typeStringAn indicator of the type of job being represented. Allowed values: house_bill_of_lading.YES
job_identifierStringThe 'primary key' uniquely identifying the job in the issuer's accounting / tms system. For some systems, this may be the same as the job_reference.YES
job_referenceStringA 'natural key' identifying the job in the issuer's accounting / tms system. This will typically be a more user friendly variant of the job_identifier. While a job_identifier can potentially be an unrelated id like a guid or numeric database id, the job_reference will typically represent a value that is presented to users to identify the job.YES
directionStringThe directionality of the job that is being billed. foreign_to_foreign is also known as triangle, third-party or cross-trade shipments. Allowed values: import, export, domestic, foreign_to_foreign.
transport_modeStringThe primary means of transport of the goods on their journey. Allowed values: sea, air, road, rail, sea_air, air_sea, inland_waterway, courier, rail_sea, rail_air, rail_road.
master_bill_of_ladingStringThe master bill of lading number the carrier has assigned to this shipment.
house_bill_of_ladingStringThe house bill of lading number the forwarder has assigned to this shipment.
vessel_nameStringThe name of the vessel associated with the job.
imo_numberStringThe International Maritime Organization (IMO) number of the ocean vessel. This should be the 7 digit number only.
voyage_numberStringThe voyage number associated with the job. This can represent an ocean vessel's voyage number, a flight number or any other number that identifies the voyage routing.
carrierPartyThe party responsible for physically transporting the goods on the job.
consignorPartyThe party sending a shipment. May also be referred to as the sender, shipper or exporter. This represents the actual shipper party named on the master bill.
consigneePartyThe party financially responsible for receipt of a shipment. Typically, but not always, the consignee is the receiver of the shipment as well as the importer of record. This represents the actual consignee party named on the master bill.
customerPartyThe customer that is contracting the forwarder to move the goods.
pickupAddressThe physical original point of the shipment where the goods are retrieved from.
port_of_loadingUnLocode | AirPortThe port where goods are loaded by the carrier on to the vessel.
port_of_dischargeUnLocode | AirPortThe port where goods are offloaded from the vessel by the carrier.
deliveryAddressThe physical destination point of the shipment where the goods are sent to.
gross_weightWeightThe gross weight of goods on the job.
chargeable_weightWeightThe chargeable weight of goods on the job.
volumeVolumeThe total volume of the goods on the job.
estimated_pickup_dateDateTimeThe estimated date the goods will be picked up from the origin point.
pickup_dateDateTimeThe actual date the goods were picked up from the origin point.
estimated_departure_dateDateTimeThe estimated date the goods will depart from the port of loading.
departure_dateDateTimeThe actual date the goods departed from the port of loading.
estimated_arrival_dateDateTimeThe estimated date the goods will arrive at the port of discharge.
arrival_dateDateTimeThe actual date the goods arrived at the port of discharge.
estimated_delivery_dateDateTimeThe estimated date the goods will be delivered.
delivery_dateDateTimeThe actual date the goods were delivered.
description_of_goodsStringA generalized description of the type of goods moving on the job.
freight_payment_termsStringThe freight terms of payment indicating the party responsible for freight charges. Allowed values: collect, prepaid, third_party.
inco_termsStringThe terms of sale defining the responsibilities of the consignor/seller and consignee/buyer. Expired terms dat, daf, des, deq, ddu are included for backwards compatibility sake, though it is very highly recommended to no longer utilize them. Allowed values: exw, fca, fas, fob, cfr, cif, cpt, cip, dap, dpu, ddp, dat, daf, des, deq, ddu.
inco_terms_locationStringThe named place or port in the inco terms defining the location the terms are applicable for. Using terms of "FOB CNYTN" the location would be CNYTN
containerization_typeStringThe container load type used for the job. Allowed values: fcl, lcl, ftl, ltl.
containersArray<HouseBillJob_containers>All containers associated with the job.
commercial_invoicesArray<HouseBillJob_commercial_invoices>All commercial invoices associated with the job.
purchase_ordersArray<HouseBillJob_purchase_orders>All purchase orders associated with the job.
custom_propertiesCustomProperties
NameData TypeDescriptionRequired
document_identifierStringThe 'primary key' uniquely identifying the document in the issuer's accounting system.YES
file_nameStringThe file name of the document.YES
document_classificationStringA shared code identifying the type of document sent with the invoice. Allowed values: bill_of_lading, invoice, email, customs_declaration, proof_of_delivery, commercial_invoice, purchase_order.
document_codeStringThe accounting system's native code for identifying the type of document being sent. This will typically be a code that might indicate an 'invoice', 'bill of lading', 'commercial invoice', 'customs release' or any other documents the issuer deems relevant to the transaction.YES
document_descriptionStringA free-text description of the document. Typically, this will be a full description of the document_code value.
media_typeStringThe identifier indicating the data format of the document. Also known as mime type.YES
bodyStringThe base4 encoded binary contents of the document.YES
creation_dateDateTime
custom_propertiesCustomProperties
NameData TypeDescriptionRequired
termsStringThe terms code identifying the type of payment terms in effect. net = NET, pia = Payment In Advance, cia = Cash In Advance, cod = Cash on Delivery, pod = Payment on Delivery, mfi = Month Following Invoice, eom = End of Month Allowed values: net, pia, cia, cod, pod, mfi, eom.YES
terms_numberDecimalThe value used to indicate the numeric portion of the terms code. Given the terms "NET 10", this value would be 10. Given the terms "15 MFI", this value would be 15.
discount_numberDecimalThe value used to indicate the time period portion of a discount. Typically, this is given in the number of days.
discount_percentageDecimalThe value used to indicate the overall percentage discount that will be provided for early payment. If an creditor is giving a 2.5% discount, this value should be sent as 2.5
NameData TypeDescriptionRequired
nameStringThe name of the contact
phone_numbersArray<PhoneNumber>
email_addressesArray<EmailAddress>
NameData TypeDescriptionRequired
container_numberStringThe ISO 6346 11 digit unique container identifier.YES
NameData TypeDescriptionRequired
container_numberStringThe ISO 6346 11 digit unique container identifier.YES
NameData TypeDescriptionRequired
invoice_numberStringThe unique tracking number assigned to the commercial invoice by the seller.YES
NameData TypeDescriptionRequired
order_numberStringThe unique tracking number assigned to the purchase order by the seller.YES