Outward Sales Posting API (For ERP Systems) (Beta)

Outward Sales Posting API (For ERP Systems) (Beta)

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": "order1", "parentOrderCode": "flipkart1221", "isPriority": false, "channelName": "channel", "orderTime": "2020-10-16T20:22:28.000+00:00", "orderType": "SO/STO/RTV", "messageId": 1100, "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", "virtualParentClientSkuCode": "abc", "childSkus": [ { "channelSkuCode": "xyz", "qty": 2, "barcode": "bar23", "clientSkuCode": "clientSku123" }, { "channelSkuCode": "xyz1", "qty": 1, "barcode": "bar34", "clientSkuCode": "clientSku234" } ] } ], "bundledSkuDefinitions": [ { "bundledParentBarcode": "string", "bundledParentChannelSkuId": "string", "bundledParentClientSkuCode": "string", "childSkus": [ { "barcode": "string", "channelSkuCode": "string", "qty": 0, "clientSkuCode": "string" } ] } ], "isSplitRequired": "false", "shippingCharges": 20, "channelType": "ERP", "orderItems": [ { "orderItemCode": "item123", "channelSkuCode": "1000889888", "orderedQuantity": 2, "cancelledQuantity": 1, "customerCancelledQty": 0, "sellerCancelledQty": 0, "sellerRejectQty": 0, "channelDiscount": 50, "sellingPricePerUnit": 500, "giftChargePerUnit": 10, "sellerDiscount": 5, "shippingCharge": 0, "omsItemId": 123, "barcode": "barcode1", "clientSkuCode": "clientSku1", "orderItemCustomAttributes": { "attribute1": "Value1", "attribute2": "Value2", "attribute3": "Value3", "attribute4": "Value4", "attribute5": "Value5", "attribute6": "Value6", "attribute7": "Value7", "attribute8": "Value8", "attribute9": "Value9", "channelMetadata": { "totalCashOnDeliveryFee": 0, "department": "HR", "paymentMethod": "ccavenue", "status": "processing" }, "attribute10": "Value10", "channelMetadataMap": { "key1": "value1", "key2": "value2" } } } ], "shipments": [ { "shipmentCode": "UIfd897", "omsShipmentId": "121", "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": "118208310191", "transporter": "BLUEDART", "packageSku": "P-123", "deliveredAt": "2020-10-16T20:22:28.000+00:00", "packedAt": "2020-10-16T20:22:28.000+00:00", "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 } ], "barcode": "barcode1", "clientSkuCode": "csku1" }, { "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 } ], "barcode": "barcode2", "clientSkuCode": "csku2" } ], "shipmentDetails": { "length": 30, "breadth": 20, "height": 10, "weight": 5, "shipmentId": 12345, "totalItemQuantity": 50, "packboxDetailsList": [ { "length": 15, "breadth": 10, "height": 8, "weight": 2, "boxId": 1, "awbNumber": "AWB123", "packBoxRemarks": "Fragile items", "volWeight": "0.0", "boxSkuId": "boxSku1", "boxCode": "box1", "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, "department": "HR", "paymentMethod": "ccavenue", "status": "processing" }, "channelMetadataMap": { "key1": "value1", "key2": "value2" }, "currency": "INR" } }

Field 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 OMS

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 if an order is of priority type 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

This represents the order type

Possible values →

  • 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 or NCOD

Yes

omsOrderId

Long

Internal order identifier of Increff OMS

No

turnAroundTime

ZonedDateTime

Cut off time defined as SLA in Increff OMS to process the order

No

isSplitRequired

boolean

Flat to identify if the order splitting will be done by Increff system or not

Yes

virtualSkuDefinitions

Object

List of virtual SKU definitions

No

virtualSkuDefinitions.virtualParentChannelSkuId

String

SKU code of virtual SKU

No

virtualSkuDefinitions.virtualParentBarcode

String

Barcode of parent SKU

No

virtualSkuDefinitions.virtualParentClientSkuCode

String

Unique identifier for a virtual parent sku at client’s end

No

virtualSkuDefinitions.childSkus

Object[]

List of child SKUs

No

childSkus.channelSkuCode

String

SKU code of child SKU

No

childSkus.qty

Integer

Quantity of child SKU

No

childSkus.barcode

String

Barcode of child SKU

No

childSkus.clientSkuCode

String

SKU identifier defined by user in system

No

bundledSkuDefinitions

Object[]

List of bundled SKU definitions

Yes

bundledSkuDefinitions.bundledParentBarcode

String

Barcode of parent SKU

No

bundledSkuDefinitions.bundledParentChannelSkuId

String

Channel SKU identifier of Parent SKU in a bundle

Yes

bundledSkuDefinitions.bundledParentClientSkuId

String

Client SKU identifier of Parent SKU in a bundle

No

bundledSkuDefinitions.childSkus

Object[]

List of child SKUs

Yes

childSkus.barcode

String

Unique barcode for child SKU of a bundle

No

childSkus.channelSkuCode

String

Unique identifier for child sku defined at marketplace/channel level

Yes

childSkus.qty

Integer

Quantity of child product of a bundle

No

childSkus.clientSkuCode

String

Unique identifier of child sku for client

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

Integer

Ordered Quantity of order

Yes

orderItems.cancelledQuantity

Integer

Cancelled Quantity in order

Yes

orderItems.sellerCancelledQuantity

Integer

Cancelled Quantity by Seller

No

orderItems.customerCancelledQuantity

Integer

Cancelled Quantity by Customer

No

orderItems.sellerRejectQuantity

Integer

Seller rejected Quantity

No

orderItems.sellingPricePerUnit

double

Selling Price Per Unit of a product

Yes

orderItems.giftChargePerUnit

Double

Gift Price Per Unit of a product

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 identifier of OMS

No

orderItems.barcode

String

Barcode to identify a product

Yes

orderItems.clientSkuCode

String

unique identifier of item for client

No

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

orderItemCustomAttributes.channelMetaDataMap

Map<String,String>

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

orderCustomAttributes.channelMetaData

Object

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

No

orderCustomAttributes.channelMetaDataMap

Map<String,String>

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

No

shipments.omsShipmentId

Long

Increff OMS shipment id

no

shipments.qrCode

String

QR code of the product scanned

No

shipments.shipmentStatus

String

Status of the shipment

No

shipments.awbNumber

String

AWB number of shipment

No

shipments.transporter

String

Transporter partner name

No

shipments.packageSku

String

SKU code for the package used in packing the shipment

No

shipments.deliveredAt

ZoneDateTime

Delivery time of the order to customer

No

shipments.packedAt

ZoneDateTime

Packing time for the shipment in warehouse

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

Discounts are not subtracted from base selling price

Yes

shipmentItems.baseSellingPriceTotal

Double

Total base selling price of SKU

Yes

shipmentItems.sellingPricePerUnit

Double

Per unit selling price of the SKU including tax

Discounts are not subtracted from base selling price

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.barcode

String

Unique identifier for barcode of an item of shipment

No

shipmentItems.clientSkuCode

String

Unique identifier for SKU of an item of shipment

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