# Transfer Orders _(Realtime-enabled)_

`GET` `POST` `PATCH` `DELETE` _(Table: Transfer Header)_

```
eOne/core/v1.0/transferOrders
```

Move stock between locations. POST a full transfer, header plus `transferOrderLines`, in one call.

## Resolve the warehouses

Set the from/to locations by code, or by their eOne integration key with `transferFromLocationIntegrationId` / `transferToLocationIntegrationId`. The store's transfer Id round-trips on `integrationId`.

## Release before shipping

Business Central will not post a shipment for a transfer order that is still Open, so a transfer created here has to be released before `ship` will do anything:

```
POST /transferOrders(<id>)/Microsoft.NAV.release
```

`reopen` is the counterpart, and puts a released transfer back to Open so it can be changed. Both are the standard Business Central release, so the same line checks run as in the client.

## Ship then receive

Two bound actions, `ship` (post the outbound shipment) and `receive` (post the inbound receipt). For non-direct transfers, ship first, stock moves to the in-transit location, then receive:

```
POST /transferOrders(<id>)/Microsoft.NAV.ship
POST /transferOrders(<id>)/Microsoft.NAV.receive
```

> **Note:** The originating Id is mirrored onto both posted documents, so a shipment and its receipt both carry the store's transfer key.

## One transfer per integrationId

Sending the same `integrationId` twice is rejected, naming the transfer that already holds it. The check also looks at posted transfer shipments and receipts, so a retry after a transfer has already shipped is refused too.

This matters more here than on the sales and purchase endpoints. A duplicated transfer has no customer facing document and no numbering collision to trip over, so without the check a retried POST would create a second transfer, and shipping both would move the quantity out of the source location twice and receive stock into the destination that never existed.

A blank `integrationId` is always allowed through, and an administrator can turn the check off with **Reject Duplicate Documents** on the eOne Integration Setup page.

## Dimensions

`shortcutDimension1Code` and `shortcutDimension2Code` are writable, and are what Transfer Header carries - there is no 3 to 8 on a transfer. Set them and the resulting item ledger entries carry them; leave them and Business Central defaults from the locations as before.

## Transfer Orders fields

_API column → BC field._

**Legend**

- _(req)_ required on create
- _(res)_ resolver
- _(cur)_ currency-translated
- _(ro)_ read-only
- _(ext)_ added to this endpoint by another extension (BC field name shown; its API column name is not known here)

| API | BC field | Notes |
| --- | --- | --- |
| `id` | SystemId | BC record GUID. _(ro)_ |
| `bcCompanyId` | bcCompanyId | The company this row belongs to - the same GUID that appears in the request URL. Present on every endpoint so a store pooling several companies can keep them apart without relying on which URL it called. _(ro)_ |
| `bcCompanyName` | bcCompanyName | The name of the company this row belongs to. _(ro)_ |
| `number` | No. | Transfer order number. |
| `shortcutDimension1Code` | Shortcut Dimension 1 Code | See dimensions. |
| `shortcutDimension2Code` | Shortcut Dimension 2 Code | Shortcut dimension 2. See Dimensions. |
| `dimensionSetId` | Dimension Set ID | The dimension set this record carries. Join it to the dimensionSetEntries endpoint to resolve the full set of dimension codes and values, including any beyond the eight shortcut dimension columns. _(ro)_ |
| `integrationId` | EONE Integration Id | Your external key; mirrored to both posted docs. |
| `externalDocumentNumber` | External Document No. |  |
| `transferFromCode` | Transfer-from Code | Source location. |
| `transferFromLocationIntegrationId` | transferFromLocationIntegrationId | Resolves source by location key. _(res)_ |
| `transferToCode` | Transfer-to Code | Destination location. |
| `transferToLocationIntegrationId` | transferToLocationIntegrationId | Resolves destination by location key. _(res)_ |
| `inTransitCode` | In-Transit Code | In-transit location (non-direct). |
| `directTransfer` | Direct Transfer | Skips in-transit when true. |
| `transferFromName` | Transfer-from Name | _(ro)_ |
| `transferToName` | Transfer-to Name | _(ro)_ |
| `postingDate` | Posting Date |  |
| `shipmentDate` | Shipment Date |  |
| `receiptDate` | Receipt Date |  |
| `status` | Status | Open / Released. _(ro)_ |
| `assignedUserId` | Assigned User ID |  |
| `lastModifiedDateTime` | SystemModifiedAt | _(ro)_ |

## Related pages

Collections nested under this endpoint:

- [Transfer Order Lines](https://eonesolutions.github.io/eone-bc-integration/core-transferOrderLines.md)
