# Registering Stashes & Custom Inventories

## RegisterInventory

```lua
exports.nord_inventory:RegisterInventory('mechanic_storage', {
    label = 'Mechanic Storage',
    type = 'stash',
    slots = 80,
    maxWeight = 200000,
    jobs = { mechanic = 0 },
    coords = vector3(-347.1, -133.3, 39.0)
})
```

Supported registration options are normalized to:

- `id`
- `label`
- `type`
- `slots` (1–500)
- `maxWeight`
- `coords`
- `jobs` or `groups`
- `owner`
- `public`

## RegisterStash compatibility helper

```lua
exports.nord_inventory:RegisterStash(
    'burgershot_freezer',
    'Burger Shot Freezer',
    60,
    200000,
    false,
    { burgershot = 0 },
    vector3(-1195.4, -893.8, 14.0)
)
```

Signature:

```text
RegisterStash(id, label, slots, maxWeight, owner?, groups?, coords?)
```

## Per-player owner storage

When `owner = true`, Nord namespaces the storage to the player identifier when opened through the compatible owner path.

## Security recommendation

For private inventories without world coordinates, validate the player's access in the server resource and open the storage server-side. Do not rely on an arbitrary client event to decide who can access a private stash.
