Overview
This document provides forward order life cycle flow for current Ajio Dropship Integration and new Ajio VMS Integration.
Forward Flow
Model 1 : E-invoicing through client’s ERP
Flow Diagram
Forward Order Flow
Increff Omni will fetch B2C order details through Increff's VMS Integration Layer using date filters from Ajio Channel.
Increff Omni will soft reserve the inventory. Increff Omni will send Acknowledgement Increff's VMS Integration Layer for that order. Increff’s VMS Integration layer will hold acknowledgment for a definite time (4 hours) and then will send it to Ajio. At this step Ajio will stop customer cancellations. Here 4 hours of window will enable customers to cancel the order.
Increff's VMS Integration Layer will fetch B2B order details for which acknowledgment is sent.
Increff's VMS Integration Layer will send B2B orders to client’s ERP via Increff’s ERP integration(Increff Omni Magic/Standard ERP Integration/ Custom Integration). Here orders will have the final quantity only for which invoice is to be created.
Client’s ERP will make an invoice for the final quantity submitted for B2B PO and give it to Increff's VMS Integration Layer.
Order will be released for picking.
During packing, for invoiced quantities Increff’s VMS Integration layer will generate B2B invoice at Ajio and other quantities will be cancelled for that order. B2B invoice will be updated with QR code and IRN number and the same will be uploaded to Ajio channel. If some items are not found in the warehouse or damaged, the whole order needs to be cancelled as the E invoice is already generated in ERPs and Increff can not cancel it partially on Ajio side.
B2C Invoice and Shipping labels will be fetched for each B2C order while packing in the warehouse.
At the time of handover, Increff will make a Create Manifest call to Ajio to create a manifest for shipments at Ajio channel’s end.
This will end the forward order life cycle.
Interfaces to be Implemented
For any client to go live on Ajio VMS model with Increff the following interfaces need to be implemented:
Article master creation - This api will be needed to automate tasks of uploading article master and listings against Omni Magic 2 channel. This step can be optional if in order posting Client sku id/EAN is allowed in place of some other variant id. If some other variant id is required in order posting then please refer to below document :https://increff.atlassian.net/wiki/spaces/IOSA
B2B order posting - from Increff’s ERP integration layer to client ERP. If the client’s ERP is integrated to ERP via Omni magic then they can refer to Order Posting from Omni section in the below document: https://increff.atlassian.net/wiki/spaces/IOSA
B2B Order Cancellation Posting - from Increff’s ERP integration layer to client’s ERP. If the client’s ERP is integrated via Omni magic then they can refer to the Order Posting from Omni section in the document below. Here only Complete cancellation (OUTWARD_ORDER_CANCEL) will be sent and not the partial cancellationhttps://increff.atlassian.net/wiki/spaces/IOSA
B2B Invoice details posting to Increff
Model 2 : E-invoicing through Increff (RMS)
Flow Diagram
Forward Order Flow
Increff Omni will fetch B2C order details through Increff's VMS Integration Layer using date filters from Ajio Channel.
Increff Omni will soft reserve the inventory. Increff Omni will send Acknowledgement Increff's VMS Integration Layer for that order. Increff’s VMS Integration layer will hold acknowledgement for definite time (4 hours) and then will send it to Ajio. At this step Ajio will stop customer cancellation. Here 4 hours of window will enable customers to cancel the order.
Increff's VMS Integration Layer will fetch B2B order details for which acknowledgement is sent.
After fetching B2B information, Increff’s VMS Integration layer will release the order for picking.
Here if items are not found or damaged, order can be partially canceled.
During packing, B2B invoice will be created by Increff’s RMS. The same will be generated, updated and uploaded to Ajio.
B2C Invoice and Shipping labels will be fetched for each B2C order while packing in the warehouse.
At the time of handover ,Increff will make a Create Manifest call to create a manifest for shipments at Ajio channel’s end.
This will end the forward order life cycle.
Manual Tasks to be done by Client
Clients can download reports for E-invoices generated by RMS in a defined date range on the RMS UI. They can use this for reference or manually upload it to their ERPs.
Return Flow
There are two return models supported via Ajio VMS Integration.
Credit Note Model
RSI Model
Model 1 : Credit Note
Return Order Flow - Credit note via ERP
Increff’s VMS Integration layer will receive a return expectation from Ajio against a Forward order number. This can be a customer return or RTO. In case a warehouse has not received return expectation from Ajio for an RTO, Increff’s VMS Integration layer can generate an RTO request to Ajio through Ajio VMS RTO Generation after which Increff’s VMS Integration layer will receive return expectation as RTO in some time.
This return will be processed in the warehouse and qc updates will be shared with Ajio through Increff’s VMS Integration layer.
Return order postings - from Increff’s ERP Integration layer to client’s ERP. If a client's ERP is integrated via Omni magic 2 they can refer to the Return Order Posting section in the document below. Here Shipment Array will come empty: [].https://increff.atlassian.net/wiki/spaces/IOSA
Credit note posting to Increff - After this client’s ERP has to generate credit note and share with Increff’s VMS integration layer via Ajio VMS Credit Note API Interface. This will send credit note information to Ajio.
Any Qc bad or missing items have to be handled offline with Ajio. Qc updates will be shared through integration but settlements should be done manually.
Return Order Flow - Credit note via RMS
Increff’s VMS Integration layer will receive a return expectation from Ajio against a Forward order number. This can be a customer return or RTO. In case a warehouse has not received return expectation from Ajio for an RTO, Increff’s VMS Integration layer can generate an RTO request to Ajio through Ajio VMS RTO Generation after which Increff’s VMS Integration layer will receive return expectation as RTO in some time.
This return will be processed in the warehouse and qc updates will be shared with Ajio through Increff’s VMS Integration layer.
After Return Processing, Credit note will be generated by RMS and will be shared to Ajio.
Any Qc bad or missing items have to be handled offline with Ajio. Qc updates will be shared through integration but settlements should be done manually.
Model 2 : RSI Flow
Return Order Flow
Increff’s VMS Integration layer will receive a return expectation from Ajio against a Forward order number. This can be a customer return or RTO. In case a warehouse has not received return expectation from Ajio for an RTO, Increff’s VMS Integration layer can generate an RTO request to Ajio through Ajio VMS RTO Generation after which Increff’s VMS Integration layer will receive return expectation as RTO in some time.
This return will be processed in the warehouse and qc updates will be shared with Ajio through Increff’s VMS Integration layer.
Ajio will generate RSI documents and Increff’s VMS Integration layer will pull those documents. Increff’s VMS Integration layer will mark this RSI document as ‘ACCEPTED’ to Ajio. Here one RSI document can contain some partial return items and return items from different returns. It can be possible that return items which were not received yet. We have to mark that also as ACCEPTED because of throttling restrictions at Ajio. Here one possibility is Return order is not processed yet. Still RSI will be marked ACCEPTED.
Clients can get RSI reports from Ajio VMS Reports UI. Here they can get a return item level report using which they have to manually upload in their ERP to create Inward PO and do GRN against it.
Any Qc bad or missing items have to be handled offline with Ajio. Qc updates will be shared through integration but settlements should be done manually.
API Details
B2B Invoice Details Posting
Clients need to implement this functionality in their ERP side
Production Endpoint:
https://assure-proxy.increff.com/ajio-vms/b2bInvoice/posting
Staging Endpoint:
https://staging-oltp.increff.com/ajio-vms/b2bInvoice/posting
Headers
authUsername:
authPassword:
Method
POST
Payload
{ "invoiceNumber": "9200006652", "invoiceDate": "2020-10-16T20:22:28.000+05:30", "forwardPurchaseOrder": "4042640641", "isPartialInvoice": true, "invoiceLineEntries": [ { "channelSkuCode": "460491724004", "quantity": 1 }, { "channelSkuCode": "460491724006", "quantity": 2 }, { "channelSkuCode": "460491724008", "quantity": 1 } ], "qrCode": "String", "irnNumber": "String", "invoicePdf": "Base 64 encoded byte stream", "invoiceURL": "Invoice PDF public URL" }
Response
Http Status Code: 200 [Success]
Payload Details
Parameter Name | Data Type | Description | Mandatory |
invoiceNumber | String | Invoice number on Invoice Document | yes |
invoiceDate | ZonedDateTime | Invoice date and time with zone information | yes |
forwardPurchaseOrder | String | Purchase Order Number | yes |
qrCode | String | QR Code | yes |
irnNumber | String | IRN number | yes |
isPartialInvoice | Boolean | If ERP has created partial invoice for complete order then it will be true | yes |
invoiceLineEntries | List | This is required only in case there can be multiple invoices against one PO. | no |
channelSkuCode | String | This will be the SKU code sent during Ajio order posting. | no |
quantity | Integer | Sku quantity that is invoiced | no |
invoicePdf | String | Base 64 encoded byte stream | Any one of these is mandatory. |
invoiceURL | String | Invoice PDF public URL |
Credit Note Details Posting
Clients need to implement this functionality in their ERP side
Production Endpoint:
https://assure-proxy.increff.com/ajio-vms/creditNote/posting
Staging Endpoint:
https://staging-oltp.increff.com/ajio-vms/creditNote/posting
Headers
authUsername:
authPassword:
Method
POST
Payload
{ "creditNoteNumber": "11000", "returnOrderId": "11000", "ackNumber": "11000", "ackDate": "2020-10-16T20:22:28.000+05:30", "irnNumber": "1", "signedQrCode": "string", "signedCreditNotePdf": "Base 64 encoded String", "creditNotePdfUrl": "string" }
Response
Http Status Code: 200 [Success]
If Status Code is other than 200 then Client has to retry that particular call
Payload Details
Parameter Name | Data Type | Description | Mandatory |
creditNoteNumber | String | Credit note number | yes |
returnOrderId | String | Return Order Id | yes |
ackNumber | String | Ack Number | no |
ackDate | ZonedDateTime | Ack date and time with zone information | no |
signedQrCode | String | QR Code | yes |
irnNumber | String | IRN number | yes |
signedCreditNote | String | Base 64 encoded byte stream | Any one of these is mandatory |
creditNoteUrl | String | Credit Note Pdf public URL |
RSI Fetching
Clients need to implement this functionality in their ERP side
Production Endpoint:
https://assure-proxy.increff.com/ajio-vms/rsi
Staging Endpoint:
https://staging-oltp.increff.com/ajio-vms/rsi
Headers
authUsername:
authPassword:
Method
GET
Request
Query Parameters
Parameter Name | Data Type | Description | Mandatory |
| ZonedDateTime | Date to fetch RSI from. | yes |
| ZonedDateTime | Date to fetch RSI to. | yes |
Note:-rsiDateFrom and rsiDateTo should not be more than 2 days apart.
Produces
application/json
Sample Response:
{ "returnSalesInvoices": [ { "rsiNumber": "3100000374", "createdAt": "2020-10-16T20:22:28.000+00:00", "rsiPdfUrl": "https://storage.googleapis.com/dev-oltp-nextscm-com/ARVIND/RSI/257e46e4-8ad3-4f77-98ff-d09b2b9bb904.pdf", "billingNo": "33111150000047", "irnNumber": "c46a3047f428c7ee8e29954a5bbaa82a2170879db", "qrCode": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkVEQzU3REUxMzU4", "rsiLines": [ { "returnOrderCode": "RT11381010", "clientSkuCode": "8903537740123", "hsn": "61091000", "quantity": 2, "rsiLineAmount": 2077.2, "totalLineTax": 0, "taxSummary": { "cessAmount": 0, "cessPercentage": 0, "cgstAmount": 0, "cgstPercentage": 0, "igstAmount": 0, "igstPercentage": 0, "sgstAmount": 0, "sgstPercentage": 0, "tcsAmount": 0, "tcsPercentage": 0, "gstAmount": 0 } } ] } ] }
RSI Flow
Key Points
Along with the RSI, customer code and plant/store code will also be provided.
Line items can be identified by EAN in Return Sales Posting as well in RSI. Also return order id will be sent with return order posting as well as in RSI.
RSI Payload
{ "returnSalesInvoices": [ { "rsiNumber": "3100000374", "locationCode": "MI50", "channelName": "120997", "createdAt": "2020-10-16T20:22:28.000+00:00", "rsiPdfUrl": "https://storage.googleapis.com/dev-oltp-nextscm-com/ARVIND/RSI/257e46e4-8ad3-4f77-98ff-d09b2b9bb904.pdf", "billingNo": "33111150000047", "irnNumber": "c46a3047f428c7ee8e29954a5bbaa82a2170879db", "qrCode": "eyJhbGciOiJSUzI1NiIsImtpZCI6IkVEQzU3REUxMzU4", "rsiLines": [ { "returnOrderCode": "RT11381010", "clientSkuCode": "8903537740123", "hsn": "61091001", "quantity": 2, "rsiLineAmount": 2078.2, "totalLineTax": 0, "taxSummary": { "cessAmount": 0, "cessPercentage": 0, "cgstAmount": 0, "cgstPercentage": 0, "igstAmount": 0, "igstPercentage": 0, "sgstAmount": 0, "sgstPercentage": 0, "tcsAmount": 0, "tcsPercentage": 0, "gstAmount": 0 } }, { "returnOrderCode": "RT11381010", "clientSkuCode": "8903537740124", "hsn": "61091000", "quantity": 1, "rsiLineAmount": 2077.2, "totalLineTax": 0, "taxSummary": { "cessAmount": 0, "cessPercentage": 0, "cgstAmount": 0, "cgstPercentage": 0, "igstAmount": 0, "igstPercentage": 0, "sgstAmount": 0, "sgstPercentage": 0, "tcsAmount": 0, "tcsPercentage": 0, "gstAmount": 0 } } ] } ] }
Return Order Posting Payload
{ "partnerCode": "AJIO", "locationCode": "MI50", "messageId": 5973686, "partnerLocationCode": "9", "paymentMethod": "COD", "channelName": "120997", "returnOrderCode": "RT11381010", "forwardOrderCode": "9271b307-b4e3-4d1c-913a-84cab356901f", "returnCreationTime": "2022-02-21T16:24:19.000+00:00", "items": [ { "itemCode": "22417763293495800_1", "returnOrderItemStatus": "RECEIVED", "returnReason": "SIZE_FIT_ISSUES", "channelSkuCode": "8903537740123", "sellingPricePerUnit": 899.0, "qcStatus": "PASS", "qcReason": null, "imageUrls": [], "virtualSkuChildItemReturnPostings": null }, { "itemCode": "22417763293495800_2", "returnOrderItemStatus": "RECEIVED", "returnReason": "SIZE_FIT_ISSUES", "channelSkuCode": "8903537740123", "sellingPricePerUnit": 899.0, "qcStatus": "PASS", "qcReason": null, "imageUrls": [], "virtualSkuChildItemReturnPostings": null }, { "itemCode": "22417763293495801_4", "returnOrderItemStatus": "RECEIVED", "returnReason": "SIZE_FIT_ISSUES", "channelSkuCode": "8903537740124", "sellingPricePerUnit": 899.0, "qcStatus": "PASS", "qcReason": null, "imageUrls": [], "virtualSkuChildItemReturnPostings": null } ], "shipments": [ { "shipmentCode": "9271b307-b4e3-4d1c-913a-84cab356901f", "generatedInvoiceId": "5092625", "generatedInvoiceDate": "2022-02-16T04:39:21.000+00:00", "invoiceDocumentUrl": "https://storage.googleapis.com/arvindcore-oltp-increff-com/1100007455/INVOICE_AND_SHIPPING_LABEL/e71fd0c9-17d4-4748-85b0-07aae89274f5.pdf", "shippingLabelDocumentUrl": "https://storage.googleapis.com/arvindcore-oltp-increff-com/1100007455/INVOICE_AND_SHIPPING_LABEL/e71fd0c9-17d4-4748-85b0-07aae89274f5.pdf", "externalInvoiceId": "FACHZU2200151698", "externalInvoiceDate": "2022-02-15T12:00:00.000+00:00", "shipmentItems": [ { "channelSkuCode": "8905034826997", "orderItemCode": "22417763293495800", "channelDiscount": null, "netTaxAmountPerUnit": 42.8, "netTaxAmountTotal": 42.8, "baseSellingPricePerUnit": 856.2, "baseSellingPriceTotal": 856.2, "sellingPricePerUnit": 899.0, "sellingPriceTotal": 899.0, "quantity": 1, "shippingChargePerUnit": 0.0, "taxItems": [ { "type": "IGST", "rate": 5.0, "taxPerUnit": 42.8, "taxTotal": 42.8 } ] } ] } ], "shippingAddress": { "name": "Shiva ", "line1": "reddy pally moinabad ranga reddy 501504", "line2": "Unamed road Reddy pally", "line3": "Reddy pally", "phone": null, "email": null, "city": "Hyderabad", "state": "ANDHRA PRADESH", "zip": "501504", "country": "IN" }, "billingAddress": { "name": "Shiva ", "line1": "reddy pally moinabad ranga reddy 501504", "line2": "Unamed road Reddy pally", "line3": "Reddy pally", "phone": null, "email": null, "city": "Hyderabad", "state": "ANDHRA PRADESH", "zip": "501504", "country": "IN" }, "virtualSkuDefinitions": null }