Skip to main content

Inventory Transfers

3 API calls in this section.

Endpoints for managing cross-warehouse inventory stock transfers. Transfers atomically move stock from a source warehouse/bin to a destination warehouse/bin, creating paired inventory transactions for full traceability.

List Inventory Transfers​

Warehousing / Inventory Transfers
GET/warehousing/inventory-transfers

Retrieves a paginated list of inventory transfers for the tenant.

Requires valid token with 'view:tenant' or 'manage:operations:tenant' or 'manage:module:warehouse' permission.

Query parameters

ParameterTypeDescription
tenant_idRequiredstring

UUID of the tenant (required)

Example: {{tenant_id}}

source_warehouse_idOptionalstring

Filter by source warehouse (optional)

destination_warehouse_idOptionalstring

Filter by destination warehouse (optional)

searchOptionalstring

Search by reference number (optional)

pageOptionalstring

Page number (optional, default: 1)

Example: 1

limitOptionalstring

Items per page (optional, default: 20)

Example: 20

Headers

ParameterTypeDescription
Authorizationstring

Example: Bearer {{access_token}}

Content-Typestring

Example: application/json

Staging
Request
curl
1curl --globoff --request GET "https://staging-api.ondi.io/functions/v1/warehousing/inventory-transfers?tenant_id=${TENANT_ID}&source_warehouse_id=&destination_warehouse_id=&search=&page=1&limit=20" \2  --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}" \3  --header "Content-Type: application/json"

Response examples

200OK
Response body
json
1{2  "success": true,3  "message": "Inventory transfers retrieved successfully",4  "inventory_transfers": [5    {6      "id": "transfer-uuid-1",7      "tenant_id": "tenant-uuid",8      "reference_number": "TR-20260522-A1B2C3",9      "source_warehouse_id": "wh-source-uuid",10      "destination_warehouse_id": "wh-dest-uuid",11      "status": "completed",12      "items": [13        {14          "item_id": "item-uuid",15          "quantity": 10,16          "source_bin_id": "bin-source-uuid",17          "destination_bin_id": "bin-dest-uuid",18          "lot_number": null,19          "serial_number": null20        }21      ],22      "notes": "Internal stock rebalance",23      "performed_by": "user-uuid",24      "created_at": "2026-05-22T11:37:00Z",25      "source_warehouse": {26        "id": "wh-source-uuid",27        "name": "Warehouse A",28        "code": "WH-A"29      },30      "destination_warehouse": {31        "id": "wh-dest-uuid",32        "name": "Warehouse B",33        "code": "WH-B"34      },35      "performer": {36        "id": "user-uuid",37        "full_name": "John Doe"38      }39    }40  ],41  "page": 1,42  "limit": 20,43  "total": 144}

Get Inventory Transfer​

Warehousing / Inventory Transfers
GET/warehousing/inventory-transfers/:transfer_id

Retrieves details of a specific inventory transfer including all linked inventory transactions.

Requires valid token with view or manage permissions.

Path parameters

ParameterTypeDescription
transfer_idRequiredstring

UUID of the inventory transfer

Query parameters

ParameterTypeDescription
tenant_idRequiredstring

UUID of the tenant (required)

Example: {{tenant_id}}

Headers

ParameterTypeDescription
Authorizationstring

Example: Bearer {{access_token}}

Content-Typestring

Example: application/json

Staging
Request
curl
1curl --globoff --request GET "https://staging-api.ondi.io/functions/v1/warehousing/inventory-transfers/${TRANSFER_ID}?tenant_id=${TENANT_ID}" \2  --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}" \3  --header "Content-Type: application/json"

Response examples

200OK
Response body
json
1{2  "success": true,3  "message": "Inventory transfer retrieved successfully",4  "inventory_transfer": {5    "id": "transfer-uuid-1",6    "tenant_id": "tenant-uuid",7    "reference_number": "TR-20260522-A1B2C3",8    "source_warehouse_id": "wh-source-uuid",9    "destination_warehouse_id": "wh-dest-uuid",10    "status": "completed",11    "items": [12      {13        "item_id": "item-uuid",14        "quantity": 10,15        "source_bin_id": "bin-source-uuid",16        "destination_bin_id": "bin-dest-uuid",17        "lot_number": null,18        "serial_number": null,19        "item": {20          "id": "item-uuid",21          "name": "Widget",22          "sku": "WDG-001",23          "barcode": "INV12345",24          "brand": "Acme",25          "model": "Pro",26          "unit_size": 1,27          "is_active": true28        },29        "source_bin": {30          "id": "bin-source-uuid",31          "code": "A-01-01",32          "name": "Aisle A - Shelf 1"33        },34        "destination_bin": {35          "id": "bin-dest-uuid",36          "code": "B-02-03",37          "name": "Aisle B - Shelf 2"38        }39      }40    ],41    "notes": "Internal stock rebalance",42    "performed_by": "user-uuid",43    "created_at": "2026-05-22T11:37:00Z",44    "source_warehouse": {45      "id": "wh-source-uuid",46      "name": "Warehouse A",47      "code": "WH-A"48    },49    "destination_warehouse": {50      "id": "wh-dest-uuid",51      "name": "Warehouse B",52      "code": "WH-B"53    },54    "performer": {55      "id": "user-uuid",56      "full_name": "John Doe"57    },58    "transactions": [59      {60        "id": "txn-uuid-1",61        "transaction_type": "transfer_out",62        "quantity": 10,63        "warehouse_id": "wh-source-uuid",64        "item": {65          "id": "item-uuid",66          "name": "Widget",67          "sku": "WDG-001"68        },69        "from_bin": {70          "id": "bin-source-uuid",71          "code": "A-01-01"72        },73        "to_bin": null74      },75      {76        "id": "txn-uuid-2",77        "transaction_type": "transfer_in",78        "quantity": 10,79        "warehouse_id": "wh-dest-uuid",80        "item": {81          "id": "item-uuid",82          "name": "Widget",83          "sku": "WDG-001"84        },85        "from_bin": null,86        "to_bin": {87          "id": "bin-dest-uuid",88          "code": "B-02-03"89        }90      }91    ]92  }93}

Create Inventory Transfer​

Warehousing / Inventory Transfers
POST/warehousing/inventory-transfers

Creates a cross-warehouse inventory stock transfer. Atomically decrements stock in the source warehouse and increments/creates stock in the destination warehouse.

Requires 'manage:operations:tenant' or 'manage:module:warehouse' permission.

Behavior

  • Validates both warehouses exist and belong to the tenant

  • Validates source bins belong to source warehouse, destination bins to destination warehouse

  • Checks available stock quantity at source

  • Decrements source inventory_stock

  • Increments or creates destination inventory_stock

  • Creates transfer_out + transfer_in inventory_transactions linked via reference_type='transfer'

Query parameters

ParameterTypeDescription
tenant_idRequiredstring

UUID of the tenant (required)

Example: {{tenant_id}}

Headers

ParameterTypeDescription
Authorizationstring

Example: Bearer {{access_token}}

Content-Typestring

Example: application/json

Body parameters

ParameterTypeDescription
source_warehouse_idRequiredstring

UUID of the source warehouse

destination_warehouse_idRequiredstring

UUID of the destination warehouse (must differ from source)

reference_numberOptionalstring

Custom reference number (auto-generated if omitted)

notesOptionalstring

Transfer notes

itemsRequiredarray<object>

(required, min 1): Array of transfer lines:

items.item_idRequiredstring

UUID of the inventory item

items.quantityRequirednumber

Positive integer quantity to transfer

items.source_bin_idRequiredstring

UUID of the bin in source warehouse

items.destination_bin_idRequiredstring

UUID of the bin in destination warehouse

items.lot_numberOptionalstring

Filter source stock by lot number

items.serial_numberOptionalstring

Filter source stock by serial number

Staging
Request
curl
1curl --globoff --request POST "https://staging-api.ondi.io/functions/v1/warehousing/inventory-transfers?tenant_id=${TENANT_ID}" \2  --header "Authorization: Bearer ${ONDI_ACCESS_TOKEN}" \3  --header "Content-Type: application/json" \4  --data-raw '{5  "source_warehouse_id": "{{source_warehouse_id}}",6  "destination_warehouse_id": "{{destination_warehouse_id}}",7  "reference_number": "TR-000123",8  "notes": "Internal stock transfer",9  "items": [10    {11      "item_id": "item-uuid-1",12      "quantity": 10,13      "source_bin_id": "source-bin-uuid",14      "destination_bin_id": "dest-bin-uuid"15    },16    {17      "item_id": "item-uuid-2",18      "quantity": 5,19      "source_bin_id": "source-bin-uuid-2",20      "destination_bin_id": "dest-bin-uuid-2",21      "lot_number": "LOT-2026-A"22    }23  ]24}'

Replace {{placeholders}} with your own values before sending.

Response examples

201Created
Response body
json
1{2  "success": true,3  "message": "Inventory transfer created successfully",4  "inventory_transfer": {5    "id": "transfer-uuid-1",6    "tenant_id": "tenant-uuid",7    "reference_number": "TR-20260522-A1B2C3",8    "source_warehouse_id": "wh-source-uuid",9    "destination_warehouse_id": "wh-dest-uuid",10    "status": "completed",11    "items": [12      {13        "item_id": "item-uuid-1",14        "quantity": 10,15        "source_bin_id": "source-bin-uuid",16        "destination_bin_id": "dest-bin-uuid",17        "lot_number": null,18        "serial_number": null19      }20    ],21    "notes": "Internal stock transfer",22    "performed_by": "user-uuid",23    "created_at": "2026-05-22T11:37:00Z"24  }25}