Web Service Endpoint: Send Customer Invoice To Customer
Prerequisites
Before reading on please ensure that you have understood the following topics:
Overview
The endpoint is used by a supplier organisation to push one or more invoices into the platform and have it be passed to a customer organisation, we it can then be imported back into the customer's business system. This allows organisations who supply goods and services to other organisations to automate the invoicing process, save time and money for both suppliers and customers. When a supplier organisation sends a "customer invoice" through this API endpoint, it will convert the customer invoice into a supplier invoice, and if the purchaser organisation requires it the invoice's lines can be matched up to the purchasers products, surcharges and taxcodes. This may then allow the invoice to be imported into the purchaser organisation's business system with its own codes.
HTTP Request
HTTP Method | POST | ||
HTTP URL | https://api.squizz.com/rest/1/org/send_customer_invoice_to_customer/session_id?customer_org_id=[org_id]&supplier_account_code=[supplier_account_code] |
||
Headers | |||
---|---|---|---|
Content-Type | application/json | ||
Parameters | Data Type | Mandatory | Description |
session_id | STRING | Yes | ID of the API session. Place the session ID within the URL |
customer_org_id | STRING | Yes | ID of the organisation in the platform that is to recieve the invoice. |
supplier_account_code | STRING | No | Code of the customer organisation's supplier account. The account code is only required if the customer organisation has assigned multiple supplier accounts (a.k.a. creditors or vendors) to the supplier organisation calling the endpoint. |
Body | JSON | Yes | Body contains a Customer Invoice Ecommerce Standards Document that has one or more customer invoice records. The document is serialized into its JSON data string. |
To see more information about the customer invoice fields that the endpoint supports you can find more information at Customer Invoice Records Fields.
Example Raw HTTP Request
POST https://api.squizz.com/rest/1/org/send_customer_invoice_to_customer/402934A8234E1B997D51F23974?supplier_org_id=342429EDABC3432498737 HTTP/1.1
Host: api.squizz.com
Content-Length: 3031
Content-Type: application/json
{
"resultStatus":"1",
"message":"The customer invoice data has been successfully obtained.",
"configs":{},
"dataTransferMode": "COMPLETE",
"version": 1.1,
"totalDataRecords": 1,
"dataRecords":
[
{
"keyPurchaseOrderID":"111",
"purchaseOrderCode":"POEXAMPLE-345",
"purchaseOrderNumber":"345",
"keySupplierAccountID":"2",
"supplierAccountCode":"ACM-002",
"supplierAccountName":"Acme Supplies",
"currencyISOCode": "AUD",
"deliveryContact":"Jane Doe",
"deliveryOrgName":"Acme Industries",
"deliveryEmail":"js@someemailaddress.comm",
"deliveryPhone":"+6144433332222",
"deliveryFax":"+6144433332221",
"deliveryAddress1":"Unit 5",
"deliveryAddress2":"22 Bourkie Street",
"deliveryAddress3":"Melbourne",
"deliveryPostcode":"3000",
"deliveryRegionName":"Victoria",
"deliveryCountryName":"Australia",
"deliveryCountryCodeISO2":"AU",
"deliveryCountryCodeISO3":"AUS",
"billingContact":"John Citizen",
"billingOrgName":"Acme Industries International",
"billingEmail":"ms@someemailaddress.comm",
"billingPhone":"+61445242323423",
"billingFax":"+61445242323421",
"billingAddress1":"43",
"billingAddress2":"High Street",
"billingAddress3":"Melbourne",
"billingPostcode":"3000",
"billingRegionName":"Victoria",
"billingCountryName":"Australia",
"billingCountryCodeISO2":"AU",
"billingCountryCodeISO3":"AUS",
"instructions":"Leave goods at the back entrance",
"isDropship":"N",
"lines":
[
{
"lineType":"PRODUCT",
"quantity": 4,
"priceExTax": 5.00,
"priceIncTax": 5.50,
"priceTax": 0.50,
"priceTotalExTax": 20.00,
"priceTotalIncTax": 22.00,
"priceTotalTax": 2.00,
"unitName": "EACH",
"productCode": "TEA-TOWEL-GREEN",
"productName": "Green tea towel - 30 x 6 centimetres" ,
"salesOrderProductCode": "SUPPLIER-TOWEL-GRN"
},
{
"lineType":"PRODUCT",
"quantity": 2,
"priceExTax": 5.00,
"priceIncTax": 5.50,
"priceTax": 0.50,
"priceTotalExTax": 10.00,
"priceTotalIncTax": 11.00,
"priceTotalTax": 1.00,
"unitName": "EACH",
"productCode": "TEA-TOWEL-BLUE",
"productName": "Blue tea towel - 30 x 6 centimetres",
"salesOrderProductCode": "SUP-TEA-TOWEL-BLUE"
}
]
}
]
}
HTTP Response
Response Data Type | JSON | |
Parameters | Data Type | Description |
---|---|---|
result | ENUM (SUCCESS or FAILURE) | Either "SUCCESS" or "FAILURE". If successful then the data was imported into the platform against the organsiation. |
configs.api_version | DECIMAL | Version of the SQUIZZ.com platform's API used to handle the request |
configs.result_code | STRING |
Status code of trying to import the ESD document data. The following codes could be returned:
|
configs.invoices_with_unmapped_lines | STRING | Contains a comma delimited list of key value pairs (that each are colon delimited) that specifies the index of the customer invoice record and the index of the line within the record that could not be matched to a customer's product. For example if this value was set to "1:2,1:3,4:0", Then it would specify that the 2nd customer invoice record (index 1) within the dataRecords array of the invoices uploaded in the endpoint request has lines 3 and 4 that have unmapped products (line indexes 2 and 3), and for the 5th customer invoice record (record index 4) the 1st order line has an unmapped product (line index 0). |
configs.invoices_with_unmapped_line_taxcodes | STRING | Contains a comma delimited list of key value pairs (that each are colon delimited) that specifies the index of the customer invoice record and the index of the line within the record that contains a taxcode that could not be matched to to one of the customer's taxcodes. For example if this value was set to "1:2,1:3,4:0", Then it would specify that the 2nd customer invoice record (index 1) within the dataRecords array of the invoices uploaded in the endpoint request has lines 3 and 4 that have unmapped taxcodes (line indexes 2 and 3), and for the 5th customer invoice record (record index 4) the 1st order line has an unmapped taxcode (line index 0). |
configs.invoices_with_unmapped_surcharges | STRING | Contains a comma delimited list of key value pairs (that each are colon delimited) that specifies the index of the customer invoice record and the index of the surcharge within the record that could not be matched to a customer's surcharge. For example if this value was set to "1:2,1:3,4:0", Then it would specify that the 2nd customer invoice record (index 1) within the dataRecords array of the invoices uploaded in the endpoint request has surcharges 3 and 4 that have unmapped surcharges (surcharge line indexes 2 and 3), and for the 5th customer invoice record (record index 4) the 1st order surcharge has an unmapped surcharge (surcharge line index 0). |
configs.invoices_with_unmapped_surcharge_taxcodes | STRING | Contains a comma delimited list of key value pairs (that each are colon delimited) that specifies the index of the customer invoice record and the index of the surcharge that contains a taxcode that could not be matched to a customer's taxcode. For example if this value was set to "1:2,1:3,4:0", Then it would specify that the 2nd customer invoice record (index 1) within the dataRecords array of the invoices uploaded in the endpoint request has surcharges 3 and 4 that have unmapped taxcodes for surcharges (surcharge line indexes 2 and 3), and for the 5th customer invoice record (record index 4) the 1st order surcharge has an unmapped surcharge taxcode (surcharge line index 0). |
dataRecords | JSON ARRAY | List of Supplier Invoice Ecommerce Standards Records. Each record contains details of the corresponding customer's supplier invoice that was generated from each customer invoice. These details include supplier invoice number, invoice line pricing, surcharge prices (such as freight and shipping) |
HTTP Response Example:
Customer Invoice Record Fields
When making a HTTP request to the API endpoint, in the body of the HTTP request a Purchase Order Ecommerce Standards Document (ESD) needs to be placed in its serialised JSON form, containing one or more purchase order records within it.
Within the retrieved Purchase Order JSON document, each purchase order record is conforms to the Order Purchase ESD Record format. The following table shows the record fields that this endpoint in the SQUIZZ.com API supports and reads from:
Data Type | Purchase Order Record | ||||
Field Name | Data Type | Mandatory | Default Value | Max Length | Description |
---|---|---|---|---|---|
keyPurchaseOrderID | STRING | Yes | [EMPTY STRING] | 50 | Unique identifier of the purchase order that uniquely identifies the order within the customer organisation's system. The keyPurchaseOrderID may be the same as the purchase order code, or may be based on an different internal unique identifier created in a business system's database, such as an auto-incrementing number, UUID, or GUID identifier. |
keySupplierAccountID | STRING | No | [EMPTY STRING] | 50 | The unique identifier of the supplier account that the customer organisation has linked to the purchase order. |
supplierAccountCode | STRING | Yes | [EMPTY STRING] | 60 | Code the supplier account that has been linked to the purchase order. |
purchaseOrderNumber | STRING | No | [EMPTY STRING] | 50 |
Number of the purchase order, may or may not be a unique identifier of the order. The code will be used as a reference in the sales order of the supplier organisation, and may be used find the associated supplier sales order. |
createdDate | LONG INTEGER | No | 0 |
Date that the order was created. Date is in the form of a number in milliseconds since the 01-01-1970 12:00am Epoch in UTC time-zone, stored as a long integer. |
|
instructions | STRING | No | [EMPTY STRING] | 21,844 | Text describing the instructions on how to handle or deliver the order. May contain comments on the order. |
deliveryOrgName | STRING | No | [EMPTY STRING] | 50 | Name of the organisation that the ordered products/goods will be delivered to. |
deliveryContact | STRING | No | [EMPTY STRING] | 50 | Contact person at the delivery address where the ordered products/goods will be delivered to. |
deliveryEmail | STRING | No | [EMPTY STRING] | 100 | Email address that notifications about the order delivery are to be sent to. |
deliveryAddress1 | STRING | No | [EMPTY STRING] | 90 | 1st address field to deliver the ordered products/goods to. Typically set the unit/apartment number, building name, street number and/or street name. |
STRING | No | [EMPTY STRING] | 90 | 2nd address field to deliver the ordered products/goods to. Typically set the steet number and name within this field. | |
deliveryAddress3 | STRING | No | [EMPTY STRING] | 90 | 3rd address field to deliver the ordered products/goods to. Set the suburb, city or town within this field. |
deliveryRegionName | STRING | No | [EMPTY STRING] | 70 | Name of the region, state or province to deliver the ordered products/goods to. If the field is not set then it may be auto filled by the platform based on the delivery post code/zip code. |
deliveryCountryName | STRING | No | [EMPTY STRING] | 70 |
Name of the country, state or province to deliver the ordered products/goods to. |
deliveryPostcode | STRING | No | [EMPTY STRING] | 20 | Postcode or zip code that the ordered products/goods are delivered to. |
billingContact | STRING | No | [EMPTY STRING] | 90 | Contact person where the order will be billed to. |
billingOrgName | STRING | No | [EMPTY STRING] | 50 | Name of the organisation that the order will be billed to. |
billingEmail | STRING | No | [EMPTY STRING] | 100 | Email address that notifications about billing of the order are to be sent to. |
billingAddress1 | STRING | No | [EMPTY STRING] | 90 | 1st address field to bill the order to. Typically set the unit/apartment number, building name, street number and/or street name. |
billingAddress2 | STRING | No | [EMPTY STRING] | 90 | 2nd address field to bill the order to. Typically set the steet number and name within this field. |
billingAddress3 | STRING | No | [EMPTY STRING] | 90 | 3rd address field to bill the order to. Set the suburb, city or town within this field. |
billingRegionName | STRING | No | [EMPTY STRING] | 70 | Name of the region, state or province to bill the order to. If the field is not set then it may be auto filled by the platform based on the billing post code/zip code. |
billingCountryName | STRING | No | [EMPTY STRING] | 70 | Name of the country, state or province to bill the order to. If the field is not set then it may be auto filled based on the country that the customer organisation is registered to. |
billingPostcode | STRING | No | [EMPTY STRING] | Postcode or zip code that the billing of the order will be sent to. | |
isDropship | ENUM (Y,N) | No | N | 1 | Denotes if the order should be delivered direct from the supplier to a specified consumer, as set in the delivery fields. If set to Y then the order is marked as a drop ship order. The supplier may put the organisation's name of who is raising this order onto the packaging to make it look like the ordered products/goods came from the requesting organisation. |
lines | ARRAY (ESDRecordOrderPurchaseLine) | Yes | [Empty ARRAY] | - | An array of Purchase Order Line ESD Records that specify the products/goods that are to be ordered and purchased. |
Purchase Order Line Records
For each Purchase Order Record in the lines property it may store an array of Purchase Order Line Records, with each record specifying one type of product/goods that is to be ordered and a chosen quantity.
Each purchase order line record is conforms to the Order Purchase Line ESD Record format. The following table shows the line record fields that this endpoint in the SQUIZZ.com API supports and reads from:
Data Type | Purchase Order Line Record | ||||
Field Name | Data Type | Mandatory | Default Value | Max Length | Description |
---|---|---|---|---|---|
lineType | ENUM (PRODUCT) | Yes | [EMPTY STRING] | - | Specifies the type of entities being ordered. Set to PRODUCT to denote that a physical or non-physical product is being purchased. |
keyProductID | STRING | No | [EMPTY STRING] | 50 | Unique identifier of the product within the customer organisation's system. The keyProductID may be the same as the productCode, or may be based on an different internal unique identifier created in a business system's database, such as an auto-incrementing number, UUID, or GUID identifier. |
productCode | STRING | Yes | [EMPTY STRING] | 50 |
Code that allows the product to be identified within the customer organisation's system. Typically this code is unique to each product that the organisation purchases. The product code may also be known as a Stock Keeping Unit (SKU), item number, product ID, or item code in certain systems. |
productName | STRING | No | [EMPTY STRING] | 50 |
Number of the purchase order, may or may not be a unique identifier of the order. Name of the purchasing organisation's product. The name typically contains natural words that allow it easily understood by people on what the product is, or does. |
quantity | DECIMAL | Yes | 0.0000 | 14,4 | The quantity to be ordered/purchased. Set the quantity based on the base sell unit of the supplier organisation's product. If the quantity is set at 0 or less then the quantity will be changed to 1. |
priceTotalIncTax | DECIMAL | No | 0.0000 | 14,4 | The purchaser's expected total price of the line for all quantities ordered, including taxes. |
priceTotalExTax | DECIMAL | No | 0.0000 | 14,4 | The purchaser's expected total price of the line for all quantities ordered, excluding taxes. |
priceTotalTax | DECIMAL | No | 0.0000 | 14,4 | The purchaser's expected total tax cost of the line for all quantities ordered. |
salesOrderProductCode | STRING | No | [EMPTY STRING] | 60 | Set to the product code of the supplier organisation's product. This code may be used to try to match it to one of the supplier organisation's products where an exact match can be found to the supplier's product code. |