Before You Begin
- A Sandbox account with API credentials (Client ID and Client Secret)
- The
address_ownership:read_verificationandaddress_ownership:write_verificationscopes enabled on your credentials. See API Credentials. - The blockchain address you want to verify and its
network - For
SIGNATURE: a way for the address holder to sign the Paxos message - For
SMALL_DEPOSIT: a way for the address holder or custodian to send a transaction from the address
Who Does What
Authenticate
Add theaddress_ownership:read_verification and address_ownership:write_verification scopes to your Sandbox account under API Management, then authenticate.
access_token from the response. You will use it in every subsequent request.
Signature Flow
Use this flow when the address holder can sign a message with the wallet that controls the address. This is the recommended flow for wallet integrations because it does not require an on-chain transaction.- Authenticate (above)
- Create a verification to get the message to sign
- Send the verification details to the wallet or user
- Collect the signature and submit it via Submit Signature
1. Create a Verification
- EVM
- Solana
Covers Ethereum, Ink, XLayer, Arbitrum One, and Robinhood Chain.The response contains Save the
signature_verification.message, the exact string to sign, and signature_verification.nonce, which is embedded in that message.id, signature_verification.message, network, address, and expires_at.2. Collect the Signature
Send the signing details to the wallet or user. Do not send Paxos client credentials, client secrets, or OAuth tokens to a wallet frontend or third-party collector.message exactly as returned by Paxos, including casing, spacing, and line breaks.
The signed message verifies control of the address for the requested Paxos use case. It is not an on-chain transaction and does not authorize movement of funds.
3. Submit the Signature
After the wallet or address holder returns the signature, submit it to Paxos with the verificationid.
Signing standards:
- EVM networks (Ethereum, Ink, XLayer, Arbitrum One, Robinhood Chain): EIP-191
personal_sign. Most wallets and libraries (ethers.js, viem, web3.py) expose this assignMessage. - Solana: ed25519. Sign the message bytes with
nacl.sign.detachedor equivalent.
id and the collected signature in the request body.
status moves to APPROVED immediately.
Small Deposit Flow
Use this flow when the address holder cannot sign a message, for example if the address is held by a custodian or a hardware wallet that doesn’t support the Paxos message format.- Authenticate (above)
- Create a verification to get the deposit address and amount
- Send exactly the specified amount from the address under verification
- Poll until the verification approves
1. Create a Verification
small_deposit_verification.
small_deposit_verification.amount on-chain from 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 to the deposit_address. Paxos checks both the sender and the amount. No further API call is needed.
2. Poll for Status
Poll Get Address Verification untilstatus is no longer PENDING.
What to Expect
Idempotency
Useref_id to make verification creation safe to retry. If a request times out before you get a response, resend it with the same ref_id and Paxos returns the existing verification instead of creating a new one.
ref_id is scoped to your account. The same value can be used across different accounts without conflict.
List Verifications
Use List Address Verifications to retrieve verification records, with optional filters.status, verification_method, network, address, created_at.gte, created_at.lte, created_at.gt, created_at.lt, order, limit, page_cursor.
Questions? Contact Support.