- Generate a wallet address to receive funds
- Assign dedicated addresses to payers or payment requests
- Track incoming transfers in real time
- Sweep deposits into a central treasury for reconciliation
Prerequisites
- A Crossmint server API key with the scopes
wallets.create,wallets.read,wallets:transactions.create,wallets:transactions.sign - The Crossmint Wallets SDK installed
Step 1 — Choose a Collection Strategy
There are two common ways to receive payments:- Shared treasury address: Use a single wallet address for all incoming payments. This is the simplest approach but may require additional reconciliation work.
- Dedicated deposit addresses: Create a unique wallet for each payer or payment request, then sweep funds into your treasury wallet via webhooks and internal transfers. This simplifies reconciliation by associating each address with a specific customer or invoice.
Step 2 — Create a Receiving Wallet
Create a wallet to receive stablecoin payments:- For a shared treasury address, set up a company-owned wallet using the Treasury Wallets guide
- For dedicated deposit addresses, create a wallet per payer using the Create Wallet guide
Step 3 — Share the Payment Address
Provide the wallet address to the payer. Once the transaction settles on-chain, the funds become available in the receiving wallet.Step 4 — Listen for Incoming Payments with Webhooks
Once a payer sends stablecoins to the wallet address, Crossmint fires awallets.transfer.in webhook event. Set up a webhook endpoint to receive these notifications in real time.
-
Configure a webhook endpoint in the Crossmint Console by following the Add an Endpoint guide. Select the
wallets.transfer.inevent type. - Verify the webhook signature to ensure the request is legitimate. See Verify Webhooks.
- Process the event in your handler. The payload includes the sender address, recipient address, token, amount, and on-chain transaction details:
Example webhook payload
Example webhook payload
(Optional) Step 5 — Sweep Deposits into Your Treasury
If you created dedicated deposit addresses, you may want to consolidate received funds into a single treasury wallet. To do this, transfer tokens from each deposit wallet to your treasury whenever a payment arrives. A common pattern is to trigger a sweep automatically from your webhook handler: when you receive awallets.transfer.in event for a deposit wallet, initiate a transfer from that wallet to your treasury.
Example sweep transfer
Example sweep transfer
Next Steps
Wallet Webhooks
Full schema and best practices for monitoring transfers
Check Balances
Query token balances across your wallets
Payouts
Send stablecoins to your customers
Internal Transfers
Move funds between your own treasury wallets

