01must proveConfirmed | Staff enter a merchant account, an integer minor-unit net amount and a reported deposit day; zero and negative amounts are valid, and the merchant’s settlement bank is used when no bank is supplied. ✓ A Payrix debit of -15.00 for fees is recorded as a payout of -1500.✗ A deposit with no reported deposit date is refused, naming the field. | validation | api, service | test |
02must proveConfirmed | The merchant determines the payout’s unit, currency and processor permanently; inactive merchants and banks, or banks in another unit or currency, cannot be used. | invariant | api, service, database | test |
03must proveConfirmed | A merchant’s nonvoided payouts cannot share a processor reference; voiding the earlier payout releases that reference. ✓ PX-1083 a second time is refused.✗ PX-1083 on another merchant account is accepted. | policy | service, database | test |
04must proveConfirmed | An equal amount within two business days either side in the merchant’s bank calendar requires acknowledgement of every possible duplicate, and Rhythm retains and audits those acknowledgements. | policy | service | test |
05must proveConfirmed | Voided payouts reserve no processor reference and do not participate in possible-duplicate detection. | policy | service, database | test |
06must proveConfirmed | Creation requires a request key scoped to its caller: identical retries return the existing payout, a changed body fails, and another caller’s key starts a separate request. | validation | api, service | test |
07must proveConfirmed | Payout numbering advances within the workspace without collisions between simultaneous creates, and the number is searchable with or without its payout prefix. | calculation | service, database | test |
08must proveConfirmed | Failed payout creation rolls back the payout, request-key record and audit event together. | invariant | service | test |
09must proveConfirmed | A created payout starts as manual, bank-unverified and unreconciled, with its keyed creation event committed alongside it. | lifecycle | service, database | test |
10must proveConfirmed | The duplicate preview returns hard-reference and possible-duplicate results without creating a payout. | calculation | api, service | test |
11must proveConfirmed | The create permission governs payout recording, the read permission governs duplicate preview, and the console disables creation when create is absent. | permission | api, console | test |
12Confirmed | Console payout creation has no duplicate-acknowledgement payload, so acknowledging a look-alike currently requires the API. | policy | console | observed |