{"name":"OceanAlt Payee Decision","desc":"The other half of a safe agent payment: the payee decides, before settlement, whether to accept this incoming payment. Rule-based — every reason code traces to the registry or the public rules page.","usage":"POST /api/payee/decide { payee: <registry sid>, payer?: { agentId?, address? }, amountUsdc?, purpose?, network? }","statuses":{"accept":"Pre-settlement conditions met. Settle and attach decision_id to the memo.","decline":"Final. Re-paying does not change the result.","hold_request_info":"Not final. requested_fields says what is missing; provide it and call again before expires_at (48h). Unanswered holds become decline.","not_ready":"The payee itself is not ready (not registered / not live / downgraded with disputes). This is where the enforcement ladder exits."},"reason_codes":{"OK":{"status":"accept","final":true,"en":"All pre-settlement conditions met."},"PAYEE_NOT_REGISTERED":{"status":"not_ready","final":false,"en":"Payee is not in the registry (or was withdrawn)."},"PAYEE_NOT_LIVE":{"status":"not_ready","final":false,"en":"Payee is registered but not live."},"PAYEE_DOWNGRADED_WITH_DISPUTES":{"status":"not_ready","final":false,"en":"Payee is at the lowest status tier and has unresolved disputes on record."},"PAYER_SANCTIONED":{"status":"decline","final":true,"en":"Payer address hits a sanctions / mixer list."},"PAYER_RISKY":{"status":"decline","final":true,"en":"Payer address is high-risk on OceanAlt screening."},"PAYER_CAUTION":{"status":"hold_request_info","final":false,"en":"Payer address shows risk signals; more information needed."},"PAYER_SCREENING_UNAVAILABLE":{"status":"hold_request_info","final":false,"en":"Screening did not complete right now; retry later. Not a clean bill."},"PAYER_KYA_REQUIRED":{"status":"hold_request_info","final":false,"en":"Payee requires an attributed (KYA) payer; none was presented."},"PAYER_KYA_REVOKED":{"status":"decline","final":true,"en":"Presented agent credential is revoked."},"AMOUNT_OVER_PAYEE_MAX":{"status":"decline","final":true,"en":"Amount exceeds the payee's per-payment maximum."},"AMOUNT_UNDER_PAYEE_MIN":{"status":"decline","final":true,"en":"Amount is below the payee's minimum."},"AMOUNT_MISSING":{"status":"hold_request_info","final":false,"en":"Payee has amount limits; amount was not given."},"PURPOSE_NOT_ACCEPTED":{"status":"hold_request_info","final":false,"en":"Purpose is missing or not in the payee's accepted list."}},"rules":"https://oceanalt.com/en/registry/rules","registry":"https://oceanalt.com/registry.json","spec":"https://oceanalt.com/en/rap#bilateral","counterpart":"https://oceanalt.com/api/decide (payer-side decision)"}