# Cash Drop / Safe Transfer Foundation v33

## Purpose

v33 adds controlled physical cash movement from an open register shift to another
tenant cash/bank account such as a safe, clearing account, or bank deposit account.

## Effects

A cash drop posts one atomic transfer:

- source cashbox: negative immutable cash movement
- destination account: positive immutable cash movement
- source account balance decreases
- destination account balance increases
- shift expected cash decreases
- immutable shift entry `cash_drop`
- immutable transfer record for idempotency and audit

Total cash value is conserved across the two accounts.

## Rules

- shift must be open
- destination must be active
- destination cannot equal source
- currencies must match
- amount cannot exceed shift expected cash
- amount cannot exceed source account balance
- same idempotency key returns the original transfer

## Deadlock control

Source and destination cash accounts and balances are locked in numeric ID order.

This avoids the common A→B / B→A account-transfer lock-order problem.

## API

POST /api/v1/cash/shifts/{shiftId}/cash-drops

Payload:
- destination_cash_account_id
- amount
- idempotency_key
- reason
- metadata (optional)

## Permission

- cash.shift.drop

## Next

v34:
- integrate captured cash payments automatically through public application contract/outbox
- cash refund posting
- cash drop reversal / controlled correction
