curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/transactions \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <x-api-key>' \
--data '{
"params": {
"transaction": "<string>",
"requiredSigners": [
[
"passkey:cWtP7gmZbd98HbKUuGXx5Q",
"api-key:123456789",
"external-wallet:0x1234567890123456789012345678901234567890",
"email:test@example.com",
"phone:+1234567890"
]
],
"signer": [
"passkey:cWtP7gmZbd98HbKUuGXx5Q",
"api-key:123456789",
"external-wallet:0x1234567890123456789012345678901234567890",
"email:test@example.com",
"phone:+1234567890"
]
}
}'
{
"chainType": "evm",
"walletType": "smart",
"params": {
"calls": [
{
"address": "<string>",
"functionName": "<string>",
"abi": [
{
"type": "error",
"inputs": [
"<any>"
],
"name": "<string>"
}
],
"args": [
"<any>"
],
"value": "0"
}
],
"chain": "abstract",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
}
},
"onChain": {
"userOperation": {
"sender": "<string>",
"nonce": "<string>",
"callData": "<string>",
"callGasLimit": "<string>",
"verificationGasLimit": "<string>",
"preVerificationGas": "<string>",
"maxFeePerGas": "<string>",
"maxPriorityFeePerGas": "<string>",
"paymaster": "<string>",
"paymasterVerificationGasLimit": "<string>",
"paymasterData": "<string>",
"paymasterPostOpGasLimit": "<string>",
"signature": "<string>",
"factory": "<string>",
"factoryData": "<string>"
},
"userOperationHash": "<string>",
"txId": "<string>",
"explorerLink": "<string>"
},
"id": "<string>",
"status": "awaiting-approval",
"approvals": {
"pending": [
{
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>"
}
],
"submitted": [
{
"signature": "<string>",
"submittedAt": "2024-01-01T00:00:00.000Z",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>",
"metadata": {
"deviceInfo": "<string>",
"ipAddress": "<string>",
"userAgent": "<string>"
}
}
],
"required": 123
},
"createdAt": "2024-01-01T00:00:00.000Z",
"completedAt": "2024-01-01T00:00:00.000Z",
"error": {
"reason": "build_failed",
"message": "<string>"
},
"sendParams": {
"token": "<string>",
"params": {
"amount": "<string>",
"recipient": "<string>",
"recipientAddress": "<string>"
}
}
}
Creates a new transaction for the specified wallet. Transaction will be automatically broadcast once it has all necessary approvals.
API scope required: wallets:transactions.create
curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/transactions \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <x-api-key>' \
--data '{
"params": {
"transaction": "<string>",
"requiredSigners": [
[
"passkey:cWtP7gmZbd98HbKUuGXx5Q",
"api-key:123456789",
"external-wallet:0x1234567890123456789012345678901234567890",
"email:test@example.com",
"phone:+1234567890"
]
],
"signer": [
"passkey:cWtP7gmZbd98HbKUuGXx5Q",
"api-key:123456789",
"external-wallet:0x1234567890123456789012345678901234567890",
"email:test@example.com",
"phone:+1234567890"
]
}
}'
{
"chainType": "evm",
"walletType": "smart",
"params": {
"calls": [
{
"address": "<string>",
"functionName": "<string>",
"abi": [
{
"type": "error",
"inputs": [
"<any>"
],
"name": "<string>"
}
],
"args": [
"<any>"
],
"value": "0"
}
],
"chain": "abstract",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
}
},
"onChain": {
"userOperation": {
"sender": "<string>",
"nonce": "<string>",
"callData": "<string>",
"callGasLimit": "<string>",
"verificationGasLimit": "<string>",
"preVerificationGas": "<string>",
"maxFeePerGas": "<string>",
"maxPriorityFeePerGas": "<string>",
"paymaster": "<string>",
"paymasterVerificationGasLimit": "<string>",
"paymasterData": "<string>",
"paymasterPostOpGasLimit": "<string>",
"signature": "<string>",
"factory": "<string>",
"factoryData": "<string>"
},
"userOperationHash": "<string>",
"txId": "<string>",
"explorerLink": "<string>"
},
"id": "<string>",
"status": "awaiting-approval",
"approvals": {
"pending": [
{
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>"
}
],
"submitted": [
{
"signature": "<string>",
"submittedAt": "2024-01-01T00:00:00.000Z",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>",
"metadata": {
"deviceInfo": "<string>",
"ipAddress": "<string>",
"userAgent": "<string>"
}
}
],
"required": 123
},
"createdAt": "2024-01-01T00:00:00.000Z",
"completedAt": "2024-01-01T00:00:00.000Z",
"error": {
"reason": "build_failed",
"message": "<string>"
},
"sendParams": {
"token": "<string>",
"params": {
"amount": "<string>",
"recipient": "<string>",
"recipientAddress": "<string>"
}
}
}
API key required for authentication
Unique key to prevent duplicate transaction creation
A wallet locator can be of the format:
<walletAddress>
email:<email>:<chainType>[:<walletType>]
(walletType defaults to 'smart')userId:<userId>:<chainType>[:<walletType>]
(white label user example)phoneNumber:<phoneNumber>:<chainType>[:<walletType>]
twitter:<handle>:<chainType>[:<walletType>]
x:<handle>:<chainType>[:<walletType>]
me:<chainType>[:<walletType>]
(Use when calling from the client side with a client API key)Input schema for creating a new transaction. The parameters vary based on the wallet type (EVM vs Solana vs Stellar). Parameters for a transaction from a Solana Smart Wallet
The transaction has been successfully created.
Complete transaction response including status, signing requirements, and wallet type specific data
Was this page helpful?