Test this flow in sandbox. Drive it end-to-end with simulated money and deterministic controls — start with the sandbox quickstart, then the sandbox overview for this flow, and the cheat sheet for every magic value and simulate endpoint.
Pick your flow
The rest of this page covers the requirement gates those flows share. Deposits are submit-and-listen; the gates below are the compliance and documentation requirements a transaction clears before it settles. (Non-custodial crypto payouts have one more ask — your signers co-sign before settlement, via
transaction.awaiting_signature; see Non-Custodial Payout. Passkey-mode signers approve on the verify page; a wallet in a programmatic signing mode approves via a signingRequestId instead — see Machine-signer stamping.)
Crypto deposits — sender information (Travel Rule)
When crypto arrives from a sender address Conduit doesn’t have registered, the deposit parks instead of settling and firestransaction.awaiting_sender_information (carrying the sourceAddress, the assetAmount, and an expiresAt deadline with daysRemaining). To release it, submit the sender’s (originator’s) details so Conduit can satisfy the Travel Rule:
register: false(default) — the details apply to this deposit only.register: true— also saves the address so future deposits from it clear on their own.
SENDER_INFO_TIMEOUT. The full deposit walk-through is in Receive Crypto; the originator shape (individual vs business) and the pre-registration path for a wallet the customer owns are in Registered Addresses.
Payouts — requirements depend on purpose
Every payout carries a purpose. What the payout needs to clear depends on its value:
Intercompany payouts — whitelist the recipient
Forpurpose: intercompany (first-party / same-group transfers), the recipient must already be registered for the customer — that registration is the compliance evidence, so no per-transaction document is needed. Register it once:
- Fiat (bank) recipient —
POST /v2/customers/{customerId}/whitelist-recipients, then wait forwhitelist_recipient.registered(asynchronous review). See Whitelist Recipients. - Crypto (address) recipient —
POST /v2/customers/{customerId}/wallets/registered-addresses(synchronous). See Registered Addresses.
registered. If it isn’t, the payout is rejected at submission with 422 RECIPIENT_NOT_WHITELISTED.
Other purposes — attach a supporting document
For any otherpurpose, the payout needs a supporting document, and the system tells you so by rejecting and asking you to retry with the document attached:
- Submit the payout. With no document, it’s rejected at submission with
422 DOCUMENTATION_REQUIRED— no payout is created. - Upload the document, tagged for transaction support:
- Resubmit the payout with the returned
doc_*id indocuments[]and a newidempotency-key— attaching the document changes the request body, and the original key is already bound to the no-document attempt, so reusing it returns409 IDEMPOTENCY_KEY_CONFLICT:
A document accepted at submission can still be reviewed afterward; if it’s found inadequate the payout fails with
failureCode: compliance_rejected. The full payout request shape lives in Money Movement (fiat) and Non-Custodial Payout (crypto).Where to go next
Receive Crypto
Inbound crypto end to end, including the sender-information gate.
Money Movement
Fiat funding and payouts end to end.
Non-Custodial Payout
Co-signed crypto payouts.
Whitelist Recipients
Registering intercompany recipients.