Skip to main content
The API applies three compliance checks across recipient management and transfers. Which checks apply depends on how your account is configured.

KYC wallet verification

If your account requires KYC, the wallet you supply must be a KYC-verified address. Unverified wallets are rejected with 403. Verify your wallet at kyc.madhousewallet.com. The wallet field is conditionally required on these endpoints — provide it when KYC is enabled for your account, otherwise you may omit it: When provided, a wallet must be a valid EVM (0x + 40 hex) or SVM (base58, 32–44 chars) address.

Wallet screening

Sender wallet addresses are screened against a third-party risk database before a transfer is processed. A wallet that fails screening is rejected with 403, and no transfer is created.
  • v1 transfers always screen the sender. Because the screener supports EVM addresses only, wallet_address on v1 must be an EVM address — Solana and Tron senders are not accepted.
  • v2 transfers screen the sender when screening is enabled for your account (the default). When enabled, wallet_address is required and must be EVM. When disabled, Solana senders are accepted and the wallet stays KYC-conditional.
If the screening or verification service is unavailable, requests fail closed with 503. Retry after a short delay.

Sanctions screening

When you create or rename a recipient, the accountHolderName is screened against a sanctions database. The screen matches on three signals:
  • accountHolderName — case-folded and accent-stripped exact match
  • details.address.country — ISO 3166-1 alpha-2 code
  • details.address — street, city, and postal-code token overlap
A request is rejected with 403 only when all available signals match the same sanctioned entity. When either the sanctioned record or the recipient lacks a country or address, the check falls through to name-only matching so sparse data still catches matches. This keeps false positives low for common names while preserving coverage.