Applies to: Transfer Orders API | Inventory API | Catalog API | Locations API | Team API
Learn how to manage inventory transferred between a Square seller's locations.
As you build inventory management features for multi-location retailers like Fleet Foot Running Co., it's important to provide detailed reporting for transfer orders that extends beyond basic status tracking. Your application should account for real-world scenarios where the quantities received differ from the quantities ordered—such as when shoe boxes are damaged in transit, pairs go missing, or size counts are incorrect at either store.
Square provides two complementary APIs to help you build robust transfer reporting:
The Transfer Orders API gives you detailed transfer lifecycle data (what was ordered, received, damaged, or lost). For more information, see Get the transfer order status.
The Inventory API provides real-time stock positions at each location. This guide shows you how to leverage both APIs to build reports that answer your sellers' critical questions:
- What's the status of each shoe size in my transfer?
- How many pairs do I have at each store after the transfer completes?
- Are there any size discrepancies I need to investigate?
For more information, see Get inventory adjustments, transfers, and counts.
When Fleet Foot Running Co. completes a transfer order between their Tacoma and Olympia stores, the application needs visibility into two critical aspects:
- Transfer status details - The size-by-size quantities by state (ordered, received, damaged, and lost).
- Location inventory balances - The current stock levels at both the Tacoma and Olympia stores.
Use the Transfer Orders API when you need comprehensive transfer details:
What it provides:
- Quantities ordered, pending, received, damaged, or lost for each shoe size.
- Transfer order summaries (dates, store locations, and status).
- Line-item level granularity for each size variation.
Best for: Audit trails, transfer reconciliation, and exception reporting
Use the Inventory API to determine post-transfer inventory positions:
What it provides:
- Current available quantities at each store location.
- Real-time stock levels after all adjustments.
- Consolidated view across all inventory movements.
Best for: Stock availability, replenishment decisions, and store balancing
For complete transfer visibility at Fleet Foot Running Co., combine both approaches:
- During transfer - Use the Transfer Orders API to track in-transit shoes and monitor transfer progress between stores.
- Post-transfer - Use the Inventory API to confirm final stock positions at both Tacoma and Olympia locations.
- Reconciliation - Compare transfer order quantities with inventory changes to identify any missing or damaged pairs.
This dual-API approach ensures that you can answer both "What happened during the transfer?" and "What's our current inventory position?". These are critical questions for effective retail inventory management.
You can call the SearchTransferOrders endpoint, which returns an array of transfer order summaries (lightweight objects containing essential transfer metadata without line-item details). To retrieve the complete transfer order including line items for each shoe size, pass the summary's ID to the RetrieveTransferOrder endpoint.
The following query example returns any transfer order between Fleet Foot Running Co. stores that isn't in a draft state and is sorted by the date the order is created:
Search transfer orders
With each transfer order returned by the previous query, you need to call RetrieveTransferOrder
.
curl https://connect.squareupsandbox.com/v2/transfer-orders/ZXOLSDDQKOCBMTWY \ -H 'Square-Version: 2025-09-24' \ -H 'Authorization: Bearer EAAAlkuWf9PJ7EEeV7PSMza45IqJuvI6iuPexW-yLoSx6-a6J5xOOwnNDOniKhUD' \ -H 'Content-Type: application/json'
When a transfer order is started and the inventory is received by Fleet Foot Running Co.'s Olympia store, inventory adjustments are created. To get those adjustments, call the BatchRetrieveInventoryChanges endpoint to track the movement of shoes between stores:
- 20 pairs of New Balance FuelCell (size 9) are received from the vendor at Tacoma (
InventoryAdjustment
) - 10 pairs are transferred from Tacoma to Olympia (
InventoryTransfer
) - 10 pairs are moved from
IN_STOCK
toIN_TRANSIT
at the Tacoma store (InventoryAdjustment
)
After the 10 pairs are received at the Olympia store:
- 10 pairs are moved from
IN_TRANSIT
toIN_STOCK
at Olympia (InventoryAdjustment
)
This BatchRetrieveInventoryChanges
request specifies both Fleet Foot Running Co. locations (Tacoma and Olympia) that are involved in the shoe transfer. The query filters for states of IN_TRANSIT
or IN_STOCK
and the adjustment type of ADJUSTMENT
. The date range is set to October 7 to October 8 to capture the transfer activity.
Batch retrieve inventory changes
For each shoe size that Fleet Foot Running Co. wants to report on, call the BatchRetrieveInventoryCounts endpoint. The response includes the current stock count at the specified store location for the inventory states requested.
This example asks for the in-stock and in-transit counts at the Olympia store (90A9W5RRYD2GQ
) for size 9 New Balance FuelCell shoes (XPBDUOG3VQBRASADVRSOYS67
).
Did you know?
If you provide the New Balance FuelCell item ID instead of a specific size variation ID, the endpoint returns the counts for all available sizes of that shoe model.
Batch retrieve inventory counts
To report on the actual shoe models and sizes being transferred between Fleet Foot Running Co. stores, you need to call RetrieveCatalogObject as shown in the following example, which retrieves a catalog object by the transfer order line item item_variation_id
:
Retrieve catalog object