You can deliver items to three kinds of recipients when using Crossmint:
Digital Products
For digital items (NFTs, tokens, etc.), you can specify one of the following recipient types:
- Email address: Crossmint automatically generates a secure MPC-backed custodial wallet for the user's email and delivers the item inside that new wallet. Email addresses are case-insensitive.
- Wallet address: Directly specify a blockchain wallet address. Receipt will be delivered to the email address specified in
payment.receiptEmail
. This could be a user-owned wallet (e.g., MetaMask, Phantom, etc.) or a wallet you manage. The format depends on the blockchain: - Ethereum/EVM chains: 0x1234567890abcdef1234567890abcdef12345678
- Solana: 5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty
- Other chains: Contact support for format requirements
Physical Products
For physical items, you must provide:
- Email address: Required for receipt delivery (legal requirement)
- Physical address: Required shipping information including name, address, city, state, postal code, and country
Specifying the Recipient
For Embedded Checkout, you specify the recipient by adding a recipient
object to your checkout component. The recipient can be specified by email, wallet address, or physical address for physical products.
Recipient by Email
When specifying a recipient by email, Crossmint will automatically create a secure custodial wallet on the fly for that email address:
<CrossmintProvider apiKey="YOUR_API_KEY">
<CrossmintEmbeddedCheckout
recipient={{
email: "user@example.com", // Email address of the recipient
}}
// other properties removed for brevity
/>
</CrossmintProvider>
The recipient will be able to access their purchased items by logging into their Crossmint wallet in staging or mainnet.
Recipient by Wallet Address
To deliver items directly to a specific blockchain wallet address:
<CrossmintProvider apiKey="YOUR_API_KEY">
<CrossmintEmbeddedCheckout
recipient={{
walletAddress: "0x1234567890abcdef1234567890abcdef12345678", // For EVM chains
// walletAddress: "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty" // For Solana
}}
// other properties removed for brevity
/>
</CrossmintProvider>
Physical Product Recipients
Physical Address Format
Extend the recipient object with the physicalAddress
object. These are the properties (note the required vs optional fields):
{
"recipient": {
"email": "user@example.com",
"physicalAddress": {
"name": "John Doe", // required - Full name of the recipient
"line1": "123 Main St", // required - Street address, P.O. box, company name, c/o
"line2": "Apt 4B", // optional - Apartment, suite, unit, building, floor, etc.
"city": "San Francisco", // required - City, district, suburb, town, or village
"state": "CA", // required for US addresses - State, county, province, or region
"postalCode": "94105", // required - ZIP or postal code
"country": "US" // required - Two-letter country code (ISO 3166-1 alpha-2)
}
}
}
Note: You must include the email address of the recipient in the recipient object so an email receipt can be sent to the customer (this is a legal requirement for physical product deliveries).
Currently, only US addresses are supported for physical product deliveries.
When purchasing physical products, you can specify a physical address for delivery:
<CrossmintProvider apiKey="YOUR_API_KEY">
<CrossmintEmbeddedCheckout
recipient={{
email: "user@example.com",
physicalAddress: {
name: "John Doe",
line1: "123 Main St",
line2: "Apt 4B", // optional
city: "San Francisco",
state: "CA",
postalCode: "94105",
country: "US",
},
}}
// other properties removed for brevity
/>
</CrossmintProvider>
Responses are generated using AI and may contain mistakes.