Call before every payment: allow, review or decline (free, no API key)
payment_decisionCall this before every payment your agent makes. Free, no signup, no API key. To see it work first, call it with {"to":"0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b","network":"ethereum"}: that address is a known mixer, so the answer is decline with the matching list as evidence. Pass the payee address the agent is about to pay; get a machine-executable decision: allow | review | decline, plus verifiable evidence and retry semantics — use it as a gate: if the decision is not "allow", do not pay. On allow/review it also returns a verifiable compliance attestation you can attach to the settlement so the payment carries proof it passed OceanAlt's decision. Pass resource_url (the URL that returned the 402 quote) and OceanAlt also asks that site for its own payment quote: if the quote names a different payee, or the site cannot be checked, the decision is raised to review. A match only shows the site and the payee agree; it is not an endorsement of the seller. Every decision carries a receipt signed with Ed25519 that you can verify offline with the public key at https://oceanalt.com/.well-known/oceanalt-keys.json. Free, no API key.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Payee address the agent is about to pay: 0x (EVM), T… (TRON), Solana, Bitcoin or r… (XRP Ledger); list matching only: Monero (4…/8…), Bitcoin Cash (q…/p…, optional bitcoincash: prefix), Litecoin (ltc1…) or BNB Beacon Chain (bnb1…). | |
| lang | No | Language for human-readable fields (signals, note, advice). Defaults to English. | |
| task | No | Optional payment intent: what this payment is for. Sending task, reasoning or maxAmountUsdc opts into a deterministic intent check; an empty intent is itself a finding (requires_information). | |
| network | No | EVM chain, only for a 0x address. Leave it out for Tron, Solana, Bitcoin and XRP Ledger addresses: the chain is detected from the address. | |
| purpose | No | Short purpose/memo (optional). | |
| reasoning | No | Optional payment intent: why this payee. Instruction-override phrases here route the payment to review. | |
| amountUsdc | No | Amount in USDC (optional; recorded, not required for the decision). | |
| resource_url | No | Optional: the http(s) URL of the paid resource, i.e. the URL that returned the 402 payment quote. OceanAlt asks that origin for its own quote and checks whether it names this payee (origin binding). | |
| maxAmountUsdc | No | Optional declared per-payment cap in USDC. amountUsdc above it → decline. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Input error code, e.g. unknown_network, network_address_mismatch, unparsable_url. | |
| lang | No | ||
| note | No | ||
| risk | No | Rounded to 10 when detail_level is coarse. | |
| allow | No | if (!allow) do not pay. | |
| error | No | Present only on an input error (isError: true). | |
| retry | No | ||
| cached | No | ||
| address | No | ||
| blocked | No | ||
| receipt | No | Ed25519-signed decision receipt: { signed, signature_ed25519, note }. Verify with https://oceanalt.com/.well-known/oceanalt-keys.json. | |
| signals | No | Human-readable. Do not branch on these. | |
| verdict | No | clear means no match in the data held, not that it is safe. uncertain must never be treated as clear. | |
| decision | No | ||
| evidence | No | ||
| standard | No | ||
| risk_band | No | ||
| retry_hint | No | ||
| settlement | No | ||
| detail_note | No | ||
| reason_code | No | Stable reason code; table at https://oceanalt.com/api/contract. | |
| signal_keys | No | Language-independent keys. Branch on these. Full list at https://oceanalt.com/api/contract. | |
| detail_level | No | ||
| evaluated_at | No | ||
| intelligence | No | ||
| intent_check | No | ||
| signal_class | No | ||
| evidence_as_of | No | ||
| origin_binding | No | ||
| evidence_oldest | No | ||
| screening_scope | No | Present only for list-only chains: coverage is list_only, no on-chain analysis is performed. | |
| screened_network | No | ||
| accepted_networks | No | ||
| payee_fulfillment | No | ||
| requires_information | No | ||
| evidence_qualification | No |