> For the complete documentation index, see [llms.txt](https://docs.most.wtf/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.most.wtf/developers/developer/payment-registry.md).

# Payment Registry

The Payment Registry accepts fulfillments from Market Makers (MMs), transfers funds to users on the destination chain, and records immutable fulfillment data used later for HDP verification.

## Storage

* `mapping(bytes32 => bytes32) fulfillments`: maps a fulfillment order hash to the MM’s source address (stored as `bytes32`). A non-zero value indicates the order has been fulfilled and by whom.

## HDP Integration

* The `fulfillments` mapping is the on-chain ground truth that orders were paid on the destination chain.
* HDP reads the EVM storage slot for each order’s fulfillment hash to verify non-zero presence and who fulfilled it.
* The mapping slot index is fixed by the contract’s storage layout and is used by the HDP module to derive the storage key for proofs.

## Controls and Safety

* `Pausable` admin switch and `onlyOwner` pause/unpause.
* `ReentrancyGuard` on fulfillment entrypoint.
* Uses `SafeERC20` for token transfers.
* `fulfillments[orderHash] == 0` check prevents double-fulfillment.
