Inbound | POST | /tax/compute-tax
Summary
This API is used to compute and fetch tax details.
Description
This API will compute and fetch the tax details. Tax details can optionally be stored in RMS against a unique reference no based on the request parameter “store”.
Tax Computation Logic
The user uploads the applicable tax rate rule (e.g. GST_APPAREL, GST_FOOTWEAR, GST_5, GST_8) using the UI for all HSNs
Caller invokes the APIs with line items (with HSN codes and tax rule)
If Tax Rule is given, that is consumed directly
Else, The system finds the applicable tax rate using the following logic
Find the rule for matching 8 digit HSN code.
If not found, then find rule for matching 6 digit HSN code
From the selling price and state data compute
Base price
Taxes
Tax breakup
Request Params
store
Parameter Name | Data Type | Description | Mandatory |
| Boolean | This parameter specifies if the tax details need to be stored or not. This parameter is true if tax details need to be stored. | yes |
Request
{
"fromCountryCode": "IN",
"fromState": "Karnataka",
"fromTin": "29AADCP7081J1ZY",
"fromZip": "560102",
"orderCode": "order1234",
"shipmentCode": "s101",
"toBillingState": "Gujarat",
"toBillingZip": "394518",
"toShippingState": "Gujarat",
"toBillingZip": "394518",
"toTin": "19AADCP7081J1ZZ",
"lineItems": [
{
"actualSellingPricePerUnit": 100.00,
"hsn": "hsn2431",
"lineItemId": 1,
“orderItemCode”:”1”,
“channelSku”:”channel-sku-1”,
"quantity": 1,
"sku": "sku1",
"taxRule": "GST_APPAREL",
"attributes": [
{
"key": "itemName",
"value": "Shirt"
}
]
}
],
"attributes": [
{
"key": "orderTime",
"value": "2021-06-11T15:13:12Z"
}
]
}
Parameter Name | Data Type | Description | Mandatory |
| String | Country Code of Seller | yes |
| String | State of Seller | yes |
| String | Seller GSTIN | yes |
| String | Zip/Pin code of Seller | yes |
| String | Identifier for the order whose tax details are being calculated | yes |
| String | Identifier for the shipment whose tax details are being calculated | yes |
| String | Shipping State of Customer | yes |
| String | Shipping Zip/Pin code of Customer | yes |
| String | Billing State of Customer | yes |
| String | Billing Zip/Pin code of Customer | yes |
| String | Customer GSTIN | no |
| Object[] | Order level extra attributes to be stored | no |
| String | Name of attribute | yes |
| String | Value of attribute | yes |
| Object[] | Line Items for which tax details needs to be calculated | yes |
| Double | Selling price of the item per unit | yes |
| String | HSN code for the product | yes |
| Long | Unique Id to identify the line item | yes |
| Integer | Quantity of the product | yes |
| String | SKU of the product | yes |
| String | Order Item Code in your system | no |
| String | Channel Sku of item | no |
| String | Tax Rule for the product. If passed, this will be used for tax calculation. Otherwise tax rule will be fetched from the HSN-Tax Rule mapping uploaded on UI | no |
| Object[] | LineItem level extra attributes to be stored | no |
| String | Name of attribute | yes |
| String | Value of attribute | yes |
Response
{
"referenceNo": "order1234",
"fromCountryCode": "IN",
"fromTin": "29AADCP7081J1ZY",
"fromState": "Karnataka",
"fromZip": "560102",
"toTin": "19AADCP7081J1ZZ",
"toState": "Gujarat",
"toZip": "394518",
"lineItems": [
{
"lineItemId": 1,
"actualSellingPricePerUnit": 100.0,
"quantity": 1,
"hsn": "hsn2431",
"taxRule": "GST_APPAREL",
"sku": "sku1",
“orderItemCode”:”1”,
“channelSku”:”channel-sku-1”,
"actualSellingPriceTotal": 100.0,
"baseSellingPricePerUnit": 95.24,
"baseSellingPriceTotal": 95.24,
"netTaxAmountPerUnit": 4.76,
"netTaxAmountTotal": 4.76,
"taxRate": 5.0,
"subTaxItemData": [
{
"type": "IGST",
"rate": 5.0,
"taxPerUnit": 4.76,
"taxTotal": 4.76
},
{
"type": "SGST",
"rate": 0.0,
"taxPerUnit": 0.0,
"taxTotal": 0.0
},
{
"type": "CGST",
"rate": 0.0,
"taxPerUnit": 0.0,
"taxTotal": 0.0
}
]
}
]
}
Parameter Name | Data Type | Description |
| Double | Per unit base selling price of the product |
| Double | Total base selling price of the product |
| Double | Per unit tax applicable for the product |
| Double | Total tax applicable for the product |
| Double | Tax Rate applied on the product |
| Object[] | Distribution of tax with tax type |
| Double | Type of tax applicable |
| Double | Rate of this type of tax |
| Double | Per unit tax applicable of this type |
| Double | Total tax applicable of this type |
Note: The other parameters passed in the response are the same as the parameters in the request body.
Example Response with SGST and CGST tax
{
"referenceNo": "order12345",
"fromCountryCode": "IN",
"fromTin": "29AADCP7081J1ZY",
"fromState": "Karnataka",
"fromZip": "560102",
"toTin": "19AADCP7081J1ZZ",
"toState": "Karnataka",
"toZip": "560101",
"lineItems": [
{
"lineItemId": 1,
"actualSellingPricePerUnit": 100.0,
"quantity": 1,
"hsn": "hsn2431",
"taxRule": "GST_APPAREL",
"sku": "sku1",
“orderItemCode”:”1”,
“channelSku”:”channel-sku-1”,
"actualSellingPriceTotal": 100.0,
"baseSellingPricePerUnit": 95.24,
"baseSellingPriceTotal": 95.24,
"netTaxAmountPerUnit": 4.76,
"netTaxAmountTotal": 4.76,
"taxRate": 5.0,
"subTaxItemData": [
{
"type": "IGST",
"rate": 0.0,
"taxPerUnit": 0.0,
"taxTotal": 0.0
},
{
"type": "SGST",
"rate": 2.5,
"taxPerUnit": 2.38,
"taxTotal": 2.38
},
{
"type": "CGST",
"rate": 2.5,
"taxPerUnit": 2.38,
"taxTotal": 2.38
}
]
}
]
}
FAQs
For which countries is tax computation supported by RMS?
Right now, tax computation is supported for India and UAE. For India, tax computation is supported for shipments being transported within India and outside India as well.
If the request parameter “store“ is being passed as true and the data is being stored, where can I see this stored data?
You can see the stored data in the RMS Reports section in RMS UI.
Since both billing and shipping states and zips are being passed in the request payload, how does RMS decide whether IGST is to be applied or CGST/SGST is to be applied?
If the “toTin“ field has some value that is not “NA“ or ““(empty string), then it is considered as a B2B transaction and the billing state/zip would be considered for tax computation. Otherwise, it would be considered as B2C transaction.