Inventory

Adjustments & transfers

The two legitimate ways to change stock outside a sale or a purchase.

GET/inventory/adjustments/

List stock adjustments — recounts, damage, write-offs.

Filters

statuswarehouse

Combine any of these as query parameters. Also accepts cursor and page_size.

Fields on each result

id
integer
warehouse
integer
warehouse_name
string
reason
string
status
enum(draft, approved, rejected)* `draft` - Draft * `approved` - Approved * `rejected` - Rejected
created_by
integer
created_by_name
string
approved_by
integer
approved_by_name
string
items
array of object
created_at
datetime
updated_at
datetime

Errors

401The access token is missing or has expired. Refresh and retry.
403Your role lacks permission, or X-Shop-Id is a shop you cannot access.
429Rate limited. Wait for Retry-After seconds.
Request
curl https://api.tajirpoint.com/api/v1/inventory/adjustments/ \
  -H "Authorization: Bearer $TAJIR_TOKEN" \
  -H "X-Shop-Id: 8f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f"
Response · 200
{
  "next": "https://api.tajirpoint.com/api/v1/inventory/adjustments/?cursor=cD0yMDI2LTA3LTExVDA5MTQyMlomcD00Mg",
  "previous": null,
  "results": [
    {
      "id": 42,
      "warehouse": 1,
      "warehouse_name": "Main Store",
      "reason": "Damaged in transit",
      "status": "active",
      "created_by": 1,
      "created_by_name": "Main Store",
      "approved_by": 1,
      "approved_by_name": "Main Store",
      "items": [],
      "created_at": "2026-07-11T09:14:22Z",
      "updated_at": "2026-07-11T09:14:22Z"
    }
  ]
}
Response · error
{
  "error": {
    "code": 400,
    "message": "Validation failed.",
    "details": {
      "quantity": ["Must be greater than zero."]
    }
  }
}
POST/inventory/adjustments/

Adjust stock outside the normal flow. Use this for a recount or a write-off, and always give a reason: the adjustment is what an auditor reads to understand why the number changed.

Body parameters

warehouseRequired
integer
reasonRequired
string
itemsRequired
array of objectList of {"variant": <id>, "quantity_change": <decimal>, "reason": "..."}

Response fields

id
integer
warehouse
integer
reason
string
items
array of objectList of {"variant": <id>, "quantity_change": <decimal>, "reason": "..."}

Errors

400Validation failed. `details` names the offending fields.
409Conflict — most often insufficient stock for one of the lines.
401The access token is missing or has expired. Refresh and retry.
403Your role lacks permission, or X-Shop-Id is a shop you cannot access.
429Rate limited. Wait for Retry-After seconds.
Request
curl -X POST https://api.tajirpoint.com/api/v1/inventory/adjustments/ \
  -H "Authorization: Bearer $TAJIR_TOKEN" \
  -H "X-Shop-Id: 8f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f" \
  -H "Content-Type: application/json" \
  -d '{
    "warehouse": 1,
    "reason": "Damaged in transit",
    "items": []
  }'
Response · 200
{
  "id": 42,
  "warehouse": 1,
  "reason": "Damaged in transit",
  "items": []
}
Response · error
{
  "error": {
    "code": 400,
    "message": "Validation failed.",
    "details": {
      "quantity": ["Must be greater than zero."]
    }
  }
}
GET/inventory/transfers/

List stock transfers between warehouses.

Filters

statuswarehouse

Combine any of these as query parameters. Also accepts cursor and page_size.

Fields on each result

id
integer
from_warehouse
integer
from_warehouse_name
string
to_warehouse
integer
to_warehouse_name
string
status
enum(draft, in_transit, completed, cancelled)* `draft` - Draft * `in_transit` - In Transit * `completed` - Completed * `cancelled` - Cancelled
notes
string
items
array of object
created_at
datetime
updated_at
datetime

Errors

401The access token is missing or has expired. Refresh and retry.
403Your role lacks permission, or X-Shop-Id is a shop you cannot access.
429Rate limited. Wait for Retry-After seconds.
Request
curl https://api.tajirpoint.com/api/v1/inventory/transfers/ \
  -H "Authorization: Bearer $TAJIR_TOKEN" \
  -H "X-Shop-Id: 8f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f"
Response · 200
{
  "next": "https://api.tajirpoint.com/api/v1/inventory/transfers/?cursor=cD0yMDI2LTA3LTExVDA5MTQyMlomcD00Mg",
  "previous": null,
  "results": [
    {
      "id": 42,
      "from_warehouse": 1,
      "from_warehouse_name": "Main Store",
      "to_warehouse": 1,
      "to_warehouse_name": "Main Store",
      "status": "active",
      "notes": "",
      "items": [],
      "created_at": "2026-07-11T09:14:22Z",
      "updated_at": "2026-07-11T09:14:22Z"
    }
  ]
}
Response · error
{
  "error": {
    "code": 400,
    "message": "Validation failed.",
    "details": {
      "quantity": ["Must be greater than zero."]
    }
  }
}
POST/inventory/transfers/

Move stock between warehouses. Stock leaves the source immediately and lands at the destination when the transfer is received.

Body parameters

from_warehouseRequired
integer
to_warehouseRequired
integer
notesOptional
string
itemsRequired
array of objectList of {"variant": <id>, "quantity": <decimal>}

Response fields

id
integer
from_warehouse
integer
to_warehouse
integer
notes
string
items
array of objectList of {"variant": <id>, "quantity": <decimal>}

Errors

400Validation failed. `details` names the offending fields.
409Conflict — most often insufficient stock for one of the lines.
401The access token is missing or has expired. Refresh and retry.
403Your role lacks permission, or X-Shop-Id is a shop you cannot access.
429Rate limited. Wait for Retry-After seconds.
Request
curl -X POST https://api.tajirpoint.com/api/v1/inventory/transfers/ \
  -H "Authorization: Bearer $TAJIR_TOKEN" \
  -H "X-Shop-Id: 8f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f" \
  -H "Content-Type: application/json" \
  -d '{
    "from_warehouse": 1,
    "to_warehouse": 1,
    "items": [],
    "notes": ""
  }'
Response · 200
{
  "id": 42,
  "from_warehouse": 1,
  "to_warehouse": 1,
  "notes": "",
  "items": []
}
Response · error
{
  "error": {
    "code": 400,
    "message": "Validation failed.",
    "details": {
      "quantity": ["Must be greater than zero."]
    }
  }
}