Jit V2
Jit V2
Jit V2
SPECIFICATION
Table of Contents
GETTING STARTED................................................................................................................................................................... 3
URI SCHEME......................................................................................................................................................................................................................................3
API CALLS................................................................................................................................................................................ 4
AUTHENTICATION...............................................................................................................................................................................................................................4
GET PENDENCY ORDERS...................................................................................................................................................................................................................5
Cancel ORDER............................................................................................................................................................................... 7
GET ORDERS....................................................................................................................................................................................................................................18
GENERATE B2B INVOICE................................................................................................................................................................................................................13
UPDATE B2B INVOICE....................................................................................................................................................................................................................16
UPLOAD SIGNED COPY OF B2B INVOICE.......................................................................................................................................................................................17
CANCELLATION SUMMARY (NOT AN API, GENERAL UNDERSTANDING):.......................................................................................................18
GENERATE SHIPPING LABEL DATA.................................................................................................................................................................................................20
GENERATE SHIPPING LABEL PDF.........................................................................................................................................................22
GENERATE MANIFEST.....................................................................................................................................................................................................................23
Products Count........................................................................................................................................................................... 24
Products........................................................................................................................................................................................................................................25
Update ATP Inventory.............................................................................................................................................................................................................26
Shipment Box..............................................................................................................................................................................................................................30
Invoice Details............................................................................................................................................................................................................................32
Overview
This is the AJIO JIT B2B Fulfilment API Integration Guide. It provides details for the implementation,
parameter formats, Cancelation flow, and order status information. It also provides descriptions, syntax, and
usage examples for each of the actions and data types.
Getting Started
URI Scheme
Base path: to be confirmed
Sandbox IP: http://116.50.64.106:8080
Prod URL: https://api-seller.services.ajio.com
Once Onboarding is completed, generated POB ID and POB password will be shared over email which is to
be used in every authentication call, detailed below.
API Calls
Authentication
Generate auth token using username and password. This auth token is needed to pass in header with header
name ‘apiKey’ for all interaction with AJIO Platform.
POST /authToken
Description :
All API requests will require to pass Auth Token.
You can use Authentication API to get Auth token by passing your POB ID and POB password
Token once generated is valid for 30 mins, upon expiry with response code as 401, fresh token to
be generated using same steps.
Behaviour :
Authenticate and generate JWT based auth and refresh token.
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 40x if authentication is unsuccessful.
Consumes
• application/json
Produces
• application/json
Sample Request
{
"password":"",
"username":""
}
Sample Response
{
"success": true,
"statusCode": 0,
"result": {
"accessToken": "string",
"refreshToken": "string"
}
}
Products Count
GET /productsCount
Description :
Returns a JSON object with the product count based on the specified "publishedStatus".
The count is accessible through the "count" field in the response JSON.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Request Header
{
"apiKey": "accessToken"
}
Request Params
publishedStatus : PUBLISHED/UNPUBLISHED
Sample Response
{
"count": 0
}
Products
GET /products
Description :
The API allows users to query products based on their publication status, skus, providing the
flexibility to filter results by specifying whether products are "PUBLISHED" or
"UNPUBLISHED."
To manage large result sets, the API supports pagination through parameters like
"pageNumber" and "pageSize," enabling users to retrieve a controlled subset of product data
per request.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Request Header
{
"apiKey": "accessToken"
}
Request Params
publishedStatus : PUBLISHED/UNPUBLISHED
skus: String (Comma Seperated)
pageNumber : Integer (starting from 1)
pageSize : Integer (starting from 1)
Update ATP Inventory
POST /updateInventory
Description :
The API allows users to query products based on their publication status, skus, providing the
flexibility to filter results by specifying whether products are "PUBLISHED" or
"UNPUBLISHED."
To manage large result sets, the API supports pagination through parameters like
"pageNumber" and "pageSize," enabling users to retrieve a controlled subset of product data
per request.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Request Header
{
"apiKey": "accessToken"
}
Request Body
{
"inventoryList": [
{
"productId": "49999999822",
"variantId": "49999999822",
"inventory": 51105
},
{
"productId": "49999999823",
"variantId": "49999999823",
"inventory": 510015
}
]
}
Response Body
Success :
{
"status": "SUCCESS",
"failedProductList": null
}
Partial Failure :
{
"status": "PARTIAL_SUCCESS",
"failedProductList": [
{
"productId": "900000000027",
"variantId": "900000000027",
"message": "Invalid input passed"
}
]
}
Full failure:
{
"status": "FAILED",
"failedProductList": [
{
"productId": "900000000027",
"variantId": "900000000027",
"message": "Invalid input passed"
},
{
"productId": "480005475",
"variantId": "480005475",
"message": "Invalid input passed”
}
]
}
Get Pendency Orders
API to fetch newly created Orders(without any Purchase Order). This can also be used for soft inventory
reservation at vendor side. The response contains all the open orders belongs to a POB which are yet to be
acknowledge by seller.
GET /orders/pendency
Description :
Filter and fetch orders which are in Open status and whose acknowledgment is not yet
received.
It is advised not to consume Order value from this API.
This API should only be used to get visibility on booked orders and blocking inventory.
Date Format to be adhered to avoid failures described at beginning
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Headers
{
"apiKey": "accessToken"
}
Parameters
Type Name Description Schema
orderDateFro
Query m Filter Criteria for Order date string
orderDateTo
Query Filter Criteria for Order date string
pageNumber
Query Page Number integer (int32)
pageSize
Query Page Size. (Max size is 50) integer (int32)
Produces
• application/json
Response Body:
{
"pendencies": [
{
"orderId": "string",
"orderItems": [
{
"onHold": true,
"orderItemId": "string",
"productId": "string",
"quantity": 0,
"sku": "string",
"status": "CANCELLED",
"title": "string",
"variantId": "string"
}
],
"orderStatus": "PROCESSING"
}
],
"page": {
"size": 0,
"totalElements": 0,
"totalPages": 0,
"number": 0
}
}
Get Orders
API to fetch Purchase Orders (Orders) which are previously acknowledge by seller and whose purchase
order is generated in the system.
GET /orders
Description :
Filter and fetch orders whose purchase order is generated.
Reconcile Order quantity
Refer "quantity", for quantities to be fulfilled as of now (net off all cancellations)
PO (Order) value to be considered from this API
MRP – MRP is price at which seller has catalogued specific product (inclusive of GST)
Item_base_price – It is Product ID level base price after adjustments of Seller discounts
and AJIO Margin at a unit level, exclusive of GST
Quantity – Is the count of items to be fulfilled for the mentioned Product ID
tax_summary– It is the breakup of tax values under different heads at consolidated quantity
level for the specific Product ID.
po_line_amount" – It is the final price of PO inclusive of tax and item prices* qty.
po_line_amount = Item_base_price * Quantity + tax_summary
total_tax: - It is the tax value of total PO amount.
Example:
a b c d e f g h
Item_base_ quant cgst_am cgst_perce igst_am igst_perce sgst_am sgst_perce
price ity ount ntage ount ntage ount ntage
Line 1 100 2 10 5% - - 10 5%
Line 2 200 1 - - 20 10% - -
po_line_a
mount
440
(a*b+c+e+
g)
total_tax
40
(c+e+g)
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Parameters
Type Name Description Schema
orderDateFrom
Query Filter Criteria for Order date string
orderDateTo
Query Filter Criteria for Order date string
orderIds
Query Filter Criteria for order ids string
poNumbers
Query Filter Criteria for purchase order numbers string
enum (CANCELLED,
CONFIRMED,
PACKED,
DISPATCHED,
orderStatus
Query Filter Criteria for Order Status DELIVERED,
READY_TO_DISPATCH
)
pageNumber
Query Page number integer (int32)
pageSize
Query Page Size (Max size is 50) integer (int32)
Produces
• application/json
Sample Response:
{
"orders": [
{
"additionalInfo": "string",
"billingAddress": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"country": "string",
"email": "string",
"name": "string",
"phone": "string",
"pincode": "string",
"state": "string"
},
"id": "string",
"orderDate": "string",
"orderItems": [
{
"onHold": true,
"orderItemId": "string",
"orderItemPrice": {
"currency": "string",
"discount": 0,
"sellingPrice": 0,
"totalPrice": 0,
"transferPrice": 0
},
"productId": "string",
"quantity": 0,
"sku": "string",
"status": "CANCELLED",
"title": "string",
"variantId": "string"
}
],
"orderPrice": {
"currency": "string",
"totalPrepaidAmount": 0,
},
"orderStatus": "PROCESSING",
"paymentType": "COD",
"priority": 0,
"shippingAddress": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"country": "string",
"email": "string",
"name": "string",
"phone": "string",
"pincode": "string",
"state": "string"
},
"sla": "string"
}
]
}
Cancel Order
API to cancel the order
POST /orders/cancel
Description :
Users can specify the orderId to identify the order to be canceled. Additionally, users must
provide an array of orderItems, each containing details such as orderItemId, productId,
quantity, and variantId for precise cancellation.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Consumes
• application/json
Produces
• application/json
Sample Request:
{
"orderId": "string",
"orderItems": [
{
"orderItemId": "string",
"productId": "string",
"quantity": 0,
"variantId": "string"
}
]
}
Sample Response:
{
"orderItems": [
{
"errorMessage": "string",
"orderItemId": "string"
}
],
"status": "SUCCESS"
}
Shipment Box
GET /shipment/box
Description :
The API serves to facilitate the creation of a shipment box by enabling users to submit a POST
request with essential shipment details.
Users provide a request payload containing crucial information such as "requestId,"
"shipmentNo," "orderNo," and an array of "itemDetails" specifying order item IDs
("orderItemId") and corresponding quantities.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Request Header
{
"apiKey": "accessToken"
}
Request Body
{
"requestId": "string",
"shipmentNo": "string",
"orderNo": "string",
"itemDetails": [
{
"orderItemId": "string",
"quantity": "integer"
}
]
}
Response Body
{
"masterAWB": "string"
"bagId": "string",
"status": "SUCCESS","FAILED",
"failedOrderItem": [
{
"orderItemId": "string",
"errorMessage": "string"
}
]
}
Invoice Details
GET /invoiceDetails
Description :
This API allows users to retrieve detailed information about an order's invoice by submitting a
request that includes encrypted seller credentials, the order ID, and the shipment number.
Detailed invoice information includes the invoice code, tracking number, courier details, GST
identification number (GSTIN), invoice date, invoice URL, Invoice Reference Number (IRN),
and a signed QR code.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Request Header
{
"apiKey": "accessToken"
}
Request Body
{
"auth": "string", // Encrypted seller credentials string
"orderId": "string",
"shipmentNo": "string"
}
Response Body
{
"invoicecode": "string",
"trackingNo": "string",
"courier": "string",
"gstin": "string",
"invoiceDate": "date",
"invoiceUrl": "string",
"irn": "string",
"signedQRCode": "string",
"productTaxes": [
{
"orderId": "string",
"orderItemId": "string",
"additionalInfo": "string",
"productId": "string",
"variantId": "string",
"taxPercentage": "number",
"centralGstPercentage": "number",
"stateGstPercentage": "number",
"unionTerritoryGstPercentage": "number",
"integratedGstPercentage": "number",
"compensationCessPercentage": "number"
}
],
"invoiceQuantityDetails": [
{
"orderId": "string",
"orderItemId": "string",
"invoicedQuantity": "number",
"shortPickedQantity": "number"
}
]
}
Dispatch Order
POST /orders/dispatch
Description :
Generate m
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Request Body
{
"auth": "string", // Encrypted seller credentials string
"dispatchItems": [
{
"invoiceNo": "string",
"shipmentNo": "string",
"orderId": "string"
}
]
}
Response Body
{
"failedDispatchItems": [
{
"invoiceNo": "string",
"shipmentNo": "string",
"orderId": "string"
}
],
"manifestUrl": "string",
"status": [
"SUCCESS",
"PARTIAL_SUCCESS",
"FAILED",
"IN_PROGRESS",
"EBR_PENDING"
]
}
Generate B2B Invoice
API to generate B2B invoice in AJIO.
POST / shipments/{shipmentId}/invoice
Description :
The API is designed to request the generation of B2B invoice for AJIO shipments.
• Authentication headers (x-tenant and x-pob-id) and the shipment number (shipmentNo) are
mandatory parameters.
• Upon successful invoice generation, the API responds with details about the generated invoice,
including the invoice ID, number, date, media information (resource ID and path), signed
invoice media details, invoice amount, and the final status.
Behaviour :
Parameters
Type Name Schema
x-tenant
Header string
required
x-pob-id
Header string
required
shipmentNo
Path string
required
Request Body
{
"status": "string",
"invoiceNumber": "string",
"auth": "string",
"username": "string",
"password": "string"
}
Response Body
{
"result": {
"invoiceId": 0,
"invoiceNumber": "string",
"invoiceDate": "2023-12-26",
"invoiceMedia": {
"resourceId": "string",
"path": "string"
},
"signedInvoiceMedia": {
"resourceId": "string",
"path": "string"
},
"invoiceAmount": 0,
"status": "string"
}
}
Update B2B Invoice
API to update B2B invoice.
PUT /shipments/{shipmentNo}/invoice
Description :
This API is designed to update Business-to-Business (B2B) invoice details for a
specific shipment. It requires authentication headers (x-tenant and x-pob-id) and a
request body containing information such as the invoice status, number, authentication
details (username and password), etc.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Parameters
Type Name Schema
x-tenant
Header string
required
x-pob-id
Header string
required
shipmentNo
Path string
required
Consumes
• application/json
Produces
• application/json
Request Body
{
"status": "string",
"invoiceNumber": "string",
"auth": "string",
"username": "string",
"password": "string"
}
Response Body
{
"result": {
"invoiceId": 0,
"invoiceNumber": "string",
"invoiceDate": "2023-12-26",
"invoiceMedia": {
"resourceId": "string",
"path": "string"
},
"signedInvoiceMedia": {
"resourceId": "string",
"path": "string"
},
"invoiceAmount": 0,
"status": "string"
}
}
POST / shipments/{shipmentId}/invoice/file
Description :
This API is designed to upload B2B invoice media.
The Request must include the x-tenant and x-pob-id headers for authentication and the shipmentNo as
a path param.
Behaviour :
Returns HTTP/1.1 status code 200 if the request was successful.
Returns HTTP/1.1 status code 400 request in invalid.
Returns HTTP/1.1 status code 401 if token is invalid/expired.
Throttling limit: 100 requests per minute per user.
Parameters
Type Name Schema
x-tenant
Header string
required
x-pob-id
Header string
required
shipmentNo
Path string
required
Request Body
File (required)
Response Body
{
"result": {
"invoiceId": 0,
"invoiceNumber": "string",
"invoiceDate": "2023-12-26",
"invoiceMedia": {
"resourceId": "string",
"path": "string"
},
"signedInvoiceMedia": {
"resourceId": "string",
"path": "string"
},
"invoiceAmount": 0,
"status": "string"
}
}
Cancellation Summary (Not an API, general understanding):
Customer Cancellation
Customer cancellation is allowed until B2B invoice is not generated. API integrator needs to
1. Reconcile the quantity received in Acknowledge call and consider fulfilment of the
quantity mentioned against the confirmed_quantity response parameter.
2. Reconcile the quantity received in Generate B2B invoice call and consider fulfilment of
the quantity received in response.
3. If a full order is cancelled then the seller has to stop order processing.
Seller Cancellation
Seller cancellation can be done.as below:
1. During Acknowledgement Call: In this request, seller can specify cancelled_quantity
and confirmed_quantity.
2. During Generate B2B Invoice Call: In this request, seller can specify lesser quantity against quantity
parameter than what mentioned in the confirmed_quantity during Acknowledgement call. Quantity
value should be always less than or equal to the confirmed_quantity mentioned in ACK call.
Business Cancellation
Business cancellation is allowed until B2B invoice is uploaded. API integrator needs to
1. Reconcile quantity received in Generate B2C invoice call and consider fulfilment of the
quantity received in response.
2. If a full order is business cancelled then the seller has to stop order processing.
3. Account reconciliation will be handled offline.
Scenario 1 No Cancellation
Pendency API Ordered_Quantity=5
Acknowledge Order API Cancelled_Quantity=0 Confirmed_quantity=5
Get Orders API quantity = 5 customer_cancelled quantity =0
Generate B2B invoice API quantity = 5
Generate B2C invoice API quantity = 5
Scenario 3 Customer Cancels 2 quantity before PO API is triggered but after acknowledge API
Pendency API Ordered_Quantity=5
Acknowledge Order API Cancelled_Quantity=0 Confirmed_quantity=5
Get Orders API quantity = 3 customer_cancelled quantity =2
Generate B2B invoice API quantity = 3
Generate B2C invoice API quantity = 3
Scenario 4 Customer Cancels 2 quantity before generate B2B API is triggered but after PO API
Pendency API Ordered_Quantity=5
Acknowledge Order API Cancelled_Quantity=0 Confirmed_quantity=5
Get Orders API quantity = 5 customer_cancelled quantity =0
Generate B2B invoice API quantity = 3
Generate B2C invoice API quantity = 3
Customer Cancels 1 quantity before Acknowledge API, 1 before PO API and 1
Scenario 5 before generate B2B invoice API
Pendency API Ordered_Quantity=5
Acknowledge Order API Cancelled_Quantity=1 Confirmed_quantity=4
Get Orders API quantity = 3 customer_cancelled quantity =2
Generate B2B invoice API quantity = 2
Generate B2C invoice API quantity = 2
No Customer Cancellation but 2 quantities are cancelled by business after B2B
Scenario 6 invoice
Pendency API Ordered_Quantity=5
Acknowledge Order API Cancelled_Quantity=0 Confirmed_quantity=5
Get Orders API quantity = 5 customer_cancelled quantity =0
Generate B2B invoice API quantity = 5
Generate B2C invoice API quantity = 3
Business Cancels 1 quantity before Acknowledge API, 1 before PO API and 1 before
Scenario 7 generate B2B invoice API
Pendency API Ordered_Quantity=5
Acknowledge Order API Cancelled_Quantity=1 Confirmed_quantity=4
Get Orders API quantity = 3 customer_cancelled quantity =2
Generate B2B invoice API quantity = 2