# Create and send a transfer

Moving packages between facilities means creating a manifest with the shipper, recipient, packages, and how they're being transported.

## Assemble the package list

Each package on the transfer needs its own line:

```json
{
  "package_id": "pkg_2385762",
  "tag": "1A40F0000000001000000001",
  "item_name": "Blue Dream Flower",
  "quantity": 453.6,
  "unit_of_measure": "Grams"
}
```

## Create the transfer

```bash
curl -X POST https://api.seedlink.dev/v1/connections/8f9ab02c-78c2-4292-a43d-79a327a4efd5/facilities/fac_C11-0000123-LIC/transfers \
  -H "Authorization: Bearer sl_at_..." \
  -H "Content-Type: application/json" \
  -d '{
    "transfer_type": "wholesale",
    "shipper_facility": "fac_C11-0000123-LIC",
    "recipient_facility": "fac_C10-0000045-LIC",
    "packages": [
      {
        "package_id": "pkg_2385762",
        "tag": "1A40F0000000001000000001",
        "item_name": "Blue Dream Flower",
        "quantity": 453.6,
        "unit_of_measure": "Grams"
      }
    ],
    "transporter": "Acme Logistics",
    "driver_name": "J. Rivera",
    "vehicle_info": "White box truck, plate 7ABC123"
  }'
```

The response includes the transfer's `id` and a `manifest_number`.

## Track its status

```bash
curl https://api.seedlink.dev/v1/connections/8f9ab02c-78c2-4292-a43d-79a327a4efd5/facilities/fac_C11-0000123-LIC/transfers/txf_58291 \
  -H "Authorization: Bearer sl_at_..."
```

`status` moves through `pending`, `in_transit`, `received`, or `rejected` as the upstream system updates it.

## Gotchas

Transfer writes only work against sandbox connections. There's also no endpoint yet to change a transfer's status yourself (accepting or rejecting on arrival). Status is read-only once the transfer exists, reflecting whatever the upstream system reports.

