Outward Sales Posting API (For ERP systems)

Sales Order Posting

Outbound | POST  | {Client’s URL}

Description

This API will share the Outward Order data with the ERP system with the details of sales orders which are completed in Increff Omni.
The API calls will be sent at a certain frequency from Increff system to the ERP system.

ERP system is advised to implement idempotency on messageId and shipmentCode fields.

  • One order can have multiple shipments. Once a shipment is invoiced, it will appear in all subsequent posting

  • Hence it should be ensured to capture the unique shipmentCode for idempotency at shipment level.

Postings can be triggered on below event types:

  • OUTWARD_ORDER_CREATE

  • OUTWARD_ORDER_CANCEL

  • OUTWARD_ORDER_PARTIAL_CANCEL

  • OUTWARD_ORDER_COMPLETE

  • OUTWARD_ORDER_SHIPMENT_DISPATCH

  • OUTWARD_ORDER_SHIPMENT_DELIVER

Request

{ "partnerCode": "1100013090", "partnerLocationCode": "9", "locationCode": "IN132", "orderCode": "flipkart1234", "parentOrderCode": "flipkart1221", "isPriority": false, "channelName": "flipkart", "orderTime": "2020-10-16T20:22:28.000+00:00", "orderType": "SO/STO/RTV", "messageId": 12345, "paymentMethod": "COD", "eventType": "OUTWARD_ORDER_COMPLETE", "eventTime": "2020-10-16T20:22:28.000+00:00", "omsOrderId": 1234, "turnAroundTime": "2020-10-16T20:22:28.000+00:00", "virtualSkuDefinitions": [ { "virtualParentChannelSkuId": "abc1", "virtualParentBarcode": "bar1", "childSkus": [ { "channelSkuCode": "xyz", "qty": 2, "barcode": "bar23" }, { "channelSkuCode": "xyz1", "qty": 1, "barcode": "bar34" } ] } ], "bundledSkuDefinitions": [ { "bundledParentBarcode": "string", "bundledParentChannelSkuId": "string", "childSkus": [ { "barcode": "string", "channelSkuCode": "string", "qty": 0 } ] } ], "isSplitRequired": "false", "shippingCharges": 20, "channelType": "ERP", "orderItems": [ { "orderItemCode": "item123", "channelSkuCode": "1000889888", "orderedQuantity": 2, "cancelledQuantity": 1, "customerCancelledQty": 1, "sellerCancelledQty": 0, "sellerRejectQty": 0, "channelDiscount": 50, "sellingPricePerUnit": 500, "giftChargePerUnit": 10, "sellerDiscount": 5, "shippingCharge": 0, "omsItemId": 123, "barcode": "barcode1", "orderItemCustomAttributes": { "attribute1": "Value1", "attribute2": "Value2", "attribute3": "Value3", "attribute4": "Value4", "attribute5": "Value5", "attribute6": "Value6", "attribute7": "Value7", "attribute8": "Value8", "attribute9": "Value9", "channelMetadata": { "totalCashOnDeliveryFee": 0.0, "department": "HR", "paymentMethod": "ccavenue", "status": "processing" }, "attribute10": "Value10" } } ], "shipments": [ { "shipmentCode": "UIfd897", "locationCode": "loc1", "generatedInvoiceId": "AR105044395", "generatedInvoiceDate": "2020-10-16T20:22:28.000+00:00", "externalInvoiceId": "FK56556GH45", "externalInvoiceDate": "2020-10-16T20:22:28.000+00:00", "invoiceDocumentUrl": "https://mybrand.com/invoice123.pdf", "shippingLabelDocumentUrl": "https://mybrand.com/sldoc.pdf", "irn": "a429746e55b844c9d2cb2a6f68997d1c2af29987cc834f3b52da45d1b0bc97c9", "qrCode": "eyJhbGciPiJSUzI1NiIsImtpZCI6IkI4RDYzRUNCMThFQTVFNkY0QUKDM0Q1MjQ1NDNCMjI0NjY2OUIwRjgiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJ1TlkteTFqcVhtOUtyRDFTUlVPeUpHWnBzUGcifQ.eyJkYXRhIjoie1wiU2VsbGVyR3N0aW5cIjpcIjI5QUFPQ001MzI2SjFaWVwiLFwiQnV5ZXJHc3RpblwiOlwiMjlBQUJDUjE3MThFMVpMXCIsXCJEb2NOb1wiOlwiTUVhajIyLTIzLzUwNTlcIixcIkRvY1R5cFwiOlwiSU5WXCIsXCJEb2NEdFwiOlwiMTMvMTAvMjAyMlwiLFwiVG90SW52VmFsXCI6MTgxNy4wNCxcIkl0ZW1DbnRcIjoxLFwiTWFpbkhzbkNvZGVcIjpcIjYyMTE0MjkwXCIsXCJJcm5cIjpcImE0Mjk3NDZlMzRkODQ0YzlkMmNiMmE2ZjY4OTk3ZDFjMmFmMjM5ODdjYzgzNGYzYjUyZGE0NWQxYjBiYzk3YzlcIixcIklybkR0XCI6XCIyMDIyLTEwLTEzIDEyOjAxOjAwXCJ9IiwiaXNzIjoiTklDIn0.wvB7b15AnpdQdX_d0VZEyj9dL1qWDaOFPLRPrlV0V2XIu3cE3aQ3YtsWLnTnyrmtUlokpbkkE4folBQNhfzkCPlnODNxRPfpO-Kz9eyNpqcIEp-8TqvcDKXZ3PrBRqmNmner00AG_fVmmqT1HLiyKB2sqOnhqtCfQaQF-PGnqIOhal3PDxIMVt0WAtaQOIwwDA75dsjjnFHaZFPl9tFPR8A6Wrw4NhQH-7xhABKW3Z961a_rGmO6M3XP7jPHyYPW-QWMfTqwNXwxNdFgFePL5FloPiUipt2-g4FIplgm-YcN1xMvEQ2irAfzQwbnxi7UKz-jwOgM0Zy2BbburYgDvQ", "shipmentStatus": "DELIVERED", "awbNumber": "awb1", "shipmentItems": [ { "channelSkuCode": "100000789702", "orderItemCode": "item123", "netTaxAmountPerUnit": 60, "netTaxAmountTotal": 120, "baseSellingPricePerUnit": 500, "baseSellingPriceTotal": 1000, "sellingPricePerUnit": 560, "sellingPriceTotal": 1120, "quantity": 2, "shippingChargePerUnit": 36, "channelDiscount": 30, "taxItems": [ { "type": "SGST", "rate": 6, "taxPerUnit": 30, "taxTotal": 60 }, { "type": "CGST", "rate": 6, "taxPerUnit": 30, "taxTotal": 60 } ] }, { "channelSkuCode": "100000734701", "orderItemCode": "item124", "netTaxAmountPerUnit": 60, "netTaxAmountTotal": 120, "baseSellingPricePerUnit": 500, "baseSellingPriceTotal": 1000, "sellingPricePerUnit": 560, "sellingPriceTotal": 1120, "quantity": 2, "shippingChargePerUnit": 36, "channelDiscount": 30, "taxItems": [ { "type": "SGST", "rate": 6, "taxPerUnit": 30, "taxTotal": 60 }, { "type": "CGST", "rate": 6, "taxPerUnit": 30, "taxTotal": 60 } ] } ] } ], "shipmentDetails": { "length": 30.0, "breadth": 20.0, "height": 10.0, "weight": 5.0, "shipmentId": 12345, "totalItemQuantity": 50, "packboxDetailsList": [ { "length": 15.0, "breadth": 10.0, "height": 8.0, "weight": 2.0, "boxId": 1, "awbNumber": "AWB123", "packBoxRemarks": "Fragile items", "skuQuantityDataList": [ { "globalSkuId": 987, "clientSkuId": "SKU001", "count": 10 }, { "globalSkuId": 876, "clientSkuId": "SKU002", "count": 15 } ] } ] }, "shippingAddress": { "name": "Customer's Name", "line1": "Line Address 1", "line2": "Line Address 2", "line3": "Line Address 3", "city": "city", "state": "state", "zip": "zip", "country": "country", "email": "abc@gmail.com", "phone": "9999999999" }, "billingAddress": { "name": "customer", "line1": "address line 1", "line2": "address line 2", "line3": "address line 3", "city": "Bengaluru", "state": "Karnataka", "zip": "560076", "country": "INDIA", "email": "abc@gmail.com", "phone": "9999999999" }, "orderCustomAttributes": { "attribute1": "Value1", "attribute2": "Value2", "attribute3": "Value3", "attribute4": "Value4", "attribute5": "Value5", "attribute6": "Value6", "attribute7": "Value7", "attribute8": "Value8", "attribute9": "Value9", "attribute10": "Value10", "channelMetadata": { "totalCashOnDeliveryFee": 0.0, "department": "HR", "paymentMethod": "ccavenue", "status": "processing" }, "currency": "INR" } }

 

Parameter Name

Data Type

Description

Mandatory

partnerCode

String

This represents the partner to which order was shipped to.

If Order is of type SO/STO, this field represents customer’s code

If Order is of type RTV, this field represents vendor’s code

For Marketplaces Orders, this field will be having the erp channel name which is mapped in Increff Omni

Yes

partnerLocationCode

String

This represents the partner’s location to which order was shipped to.

If Order is of type SO/STO, this field represents customer location’s code

If Order is of type RTV, this field represents vendor location’s code

Yes

isPriority

Boolean

Flag to identify wether an order is of priority or not

Yes

locationCode

String

Warehouse location from which order was fulfilled

Yes

 

orderCode

String

Unique code used by the channel to identify order

Yes

parentOrderCode

String

Parent order code  which can be null or empty or some duplicate value across orders. 

No

channelName

String

Channel name of the marketplace.

Yes

orderTime

String

Time at which order was placed at the channel in UNIX (UTC)

Yes

orderType

String

Can be - SO(Sales Order)/STO(Stock Transfer Order)/RTV(Return To Vendor), RPO(Replacement)

Yes

messageId

Long

Unique Identifier of a notification (for De-duplication)

Yes

paymentMethod

String

Possible values - COD, NCOD

Yes

eventTime

String

Time of the event

Yes

eventType

String

Postings can be sent on the below triggers

  • OUTWARD_ORDER_CREATE(creation of order),

  • OUTWARD_ORDER_CANCEL(cancellation of order),

  • OUTWARD_ORDER_PARTIAL_CANCEL(partial cancellation of order),

  • OUTWARD_ORDER_COMPLETE(completion of order) ,

  • OUTWARD_ORDER_SHIPMENT_DISPATCH(Shipment dispatch for order),

  • OUTWARD_ORDER_SHIPMENT_DELIVER(Shipment delivery for order)

Yes

omsOrderId

Long

Internal order id of OMS

No

turnAroundTime

ZonedDateTime

Turnaround time

No

bundledSkuDefinitions

Object[]

List of bundled sku definitions

No

bundledSkuDefinitions.bundledParentBarcode

String

Unique barcode of bundled Sku

No

bundledSkuDefinitions.bundledParentChannelSkuId

String

Unique identifier of bundled Sku at channel

Yes

bundledSkuDefinitions.childSkus

Object[]

List of child SKUs

Yes

childSkus.barcode

String

Unique barcode of child sku

No

childSkus.channelSkuCode

String

Unique identifier of child sku at channel

No

childSkus.qty

Integer

child sku quantity

No

orderItems

Object[]

List of order items

Yes

orderItems.orderItemCode

String

This is provided by the channel to uniquely identify each order item.

Yes

orderItems.channelskuCode

String

SKU code of order item

Yes

orderItems.orderedQuantity

int

Ordered Quantity

Yes

orderItems.cancelledQuantity

int

cancelledQuantity

Yes

orderItems.sellingPricePerUnit

double

sellingPricePerUnit

Yes

orderItems.customerCancelledQty

Integer

Customer cancelled quantity

No

orderItems.sellerCancelledQty

Integer

Seller cancelled quantity

No

orderItems.giftChargePerUnit

Double

giftChargePerUnit

No

orderItems.channelDiscount

Double

Discount provided by channel per unit

No

orderItems.sellerDiscount

Double

Discount provided by seller per unit

No

orderItems.omsItemId

Long

Internal item id of OMS

No

orderItems.barcode

String

Barcode to identify a product

Yes

orderItems.orderItemCustomAttributes

Object

Custom attributes for order items

No

orderItemCustomAttributes.attribute1

String

Custom attribute 1

No

orderItemCustomAttributes.attribute2

String

Custom attribute 2

No

orderItemCustomAttributes.attribute3

String

Custom attribute 3

No

orderItemCustomAttributes.attribute4

String

Custom attribute 4

No

orderItemCustomAttributes.attribute5

String

Custom attribute 5

No

orderItemCustomAttributes.attribute6

String

Custom attribute 6

No

orderItemCustomAttributes.attribute7

String

Custom attribute 7

No

orderItemCustomAttributes.attribute8

String

Custom attribute 8

No

orderItemCustomAttributes.attribute9

String

Custom attribute 9

No

orderItemCustomAttributes.attribute10

String

Custom attribute 10

No

orderItemCustomAttributes.channelMetaData

Object

These are additonal fields which can be sent to Increff system and can be used in subsequent Posting workflows

No

orderCustomAttributes

Object

Custom attributes for an order

No

orderCustomAttributes.channelMetaData

Objecg

These are additonal fields which can be sent to Increff system and can be used in subsequent Posting workflows

No

orderCustomAttributes.currency

String

Currency

No

orderCustomAttributes.attribute1

String

Custom attribute 1

No

orderCustomAttributes.attribute2

String

Custom attribute 2

No

orderCustomAttributes.attribute3

String

Custom attribute 3

No

orderCustomAttributes.attribute4

String

Custom attribute 4

No

orderCustomAttributes.attribute5

String

Custom attribute 5

No

orderCustomAttributes.attribute6

String

Custom attribute 6

No

orderCustomAttributes.attribute7

String

Custom attribute 7

No

orderCustomAttributes.attribute8

String

Custom attribute 8

No

orderCustomAttributes.attribute9

String

Custom attribute 9

No

orderCustomAttributes.attribute10

String

Custom attribute 10

No

shipments.qrCode

String

QR code

No

shipments.omsShipmentId

Integer

increff OMS shipment id

NO

shipments.shipmentStatus

String

Status of the shipment

No

shipments.awbNumber

String

AWB number of shipment

No

shipments.shipmentItems

Object[]

Items belonging to this shipment

Yes

shipmentItems.channelSkuCode

String

SKU code of order item

Yes

shipmentItems.locationCode

String

Fulfillment Location

Yes

shipmentItems.orderItemCode

String

This is provided by the channel to uniquely identify each order item.

Yes

shipmentItems.netTaxAmountPerUnit

Double

Per unit tax applicable for the SKU.

Yes

shipmentItems.netTaxAmountTotal

Double

Total tax applicable for the SKU

Yes

shipmentItems.baseSellingPricePerUnit

Double

Per unit base selling price of the SKU

Yes

shipmentItems.baseSellingPriceTotal

Double

Total base selling price of SKU

Yes

shipmentItems.sellingPricePerUnit

Double

Per unit selling price of the SKU including tax

Yes

shipmentItems.sellingPriceTotal

Double

Total selling price of the SKU 

Yes

shipmentItems.quantity

Integer

Quantity of the sku in the shipment item.

Yes

shipmentItems.shippingChargePerUnit

Double

Shipping charge per unit for a shipment item

No

shipmentItems.channelDiscount

Double

Channel discount of item

No

shipmentItems.taxItems

Object

Distribution of tax with tax type

Yes

shipments.shipmentDetails

Object

Shipment details

No

shipmentDetails.length

Double

Length of the shipment

No

shipmentDetails.breadth

Double

Breadth of the shipment

No

shipmentDetails.height

Double

Height of the shipment

No

shipmentDetails.weight

Double

Weight of the shipment

No

shipmentDetails.shipmentId

Long

Id to uniquely identify a shipment

No

shipmentDetails.totalItemQuantity

Integer

Count of all the items in the shipment

No

shipmentDetails.packboxDetailsList

Object[]

Details of pack boxes

No

packboxDetailsList.length

Double

Length of the pack box in consideration

No

packboxDetailsList.breadth

Double

Breadth of the pack box in consideration

No

packboxDetailsList.height

Double

Height of the pack box in consideration

No

packboxDetailsList.weight

Double

Weight of the pack box in consideration

No

packboxDetailsList.boxId

Long

Id to uniquely identify a box

No

packboxDetailsList.awbNumber

String

AWB number of the box

No

packboxDetailsList.packBoxRemarks

String

Remarks for the pack box

No

packboxDetailsList.skuQuantityDataList

Object[]

Details of skus in a box

No

skuQuantityDataList.globalSkuId

Long

Id to uniquely identify a sku in increff’s system

No

skuQuantityDataList.clientSkuId

String

Id to uniquely identify a sku on client’s end

No

skuQuantityDataList.count

Integer

Count of a particular sku in a box

No

irn

String

Irn generated on Govt. portal while e-invoicing

No

qrCode

String

QrCode generated on Govt. portal while e-invoicing

No

shipmentStatus

String

Possible values: {OPEN,CLOSED, INVOICED, MANIFESTED, DISPATCHED, CANCELLED, DELIVERED}

No

taxItems.type

String

Type of tax applicable

Yes

taxItems.rate

Double

Tax rate for this tax type

Yes

taxItems.taxPerUnit

Double

Tax applicable for this type of tax per unit

Yes

taxItems.taxTotal

Double

Total tax applicable for this type of tax

Yes

shippingAddress

Object

Shipping address of the customer

Yes

shippingAddress.name

String

Name of customer

Yes

shippingAddress.line1

String

1st line of customer’s address

Yes

shippingAddress.line2

String

2nd line of customer’s address

No

shippingAddress.line3

String

3rd line of customer’s address

No

shippingAddress.city

String

City of customer

Yes

shippingAddress.state

String

State of customer

Yes

shippingAddress.zip

String

ZIP/Pin code of customer

Yes

shippingAddress.country

String

Country of customer

Yes

shippingAddress.email

String

Email of customer

No

shippingAddress.phone

String

Phone Number of customer

No

billingAddress

Object

Billing address of the customer

Yes

billingAddress.name

String

Name of customer

Yes

billingAddress.line1

String

1st line of customer’s address

Yes

billingAddress.line2

String

2nd line of customer’s address

No

billingAddress.line3

String

3rd line of customer’s address

No

billingAddress.city

String

City of customer

Yes

billingAddress.state

String

State of customer

Yes

billingAddress.zip

String

ZIP/Pin code of customer

Yes

billingAddress.country

String

Country of customer

Yes

billingAddress.email

String

Email of customer

No

billingAddress.phone

String

Phone Number of customer

No