Skip to main content
POST
/
2025-06-09
/
wallets
/
{walletLocator}
/
transactions
Create Transaction
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:[email protected]",
        "phone:+1234567890",
        "device:0x1234567890123456789012345678901234567890"
      ]
    ],
    "signer": [
      "passkey:cWtP7gmZbd98HbKUuGXx5Q",
      "api-key:123456789",
      "external-wallet:0x1234567890123456789012345678901234567890",
      "email:[email protected]",
      "phone:+1234567890",
      "device:0x1234567890123456789012345678901234567890"
    ]
  }
}
'
{
  "chainType": "evm",
  "walletType": "smart",
  "params": {
    "calls": [
      {
        "address": "<string>",
        "functionName": "<string>",
        "abi": [
          "<unknown>"
        ],
        "args": [
          "<unknown>"
        ],
        "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>",
      "signature": "<string>",
      "paymaster": "<string>",
      "paymasterVerificationGasLimit": "<string>",
      "paymasterData": "<string>",
      "paymasterPostOpGasLimit": "<string>",
      "factory": "<string>",
      "factoryData": "<string>"
    },
    "userOperationHash": "<string>",
    "txId": "<string>",
    "explorerLink": "<string>"
  },
  "id": "<string>",
  "status": "awaiting-approval",
  "createdAt": "2024-01-01T00:00:00.000Z",
  "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
  },
  "completedAt": "2024-01-01T00:00:00.000Z",
  "error": {
    "reason": "build_failed",
    "message": "<string>"
  },
  "sendParams": {
    "token": "<string>",
    "params": {
      "recipient": "<string>",
      "recipientAddress": "<string>",
      "amount": "<string>"
    }
  }
}

Headers

X-API-KEY
string
required

API key required for authentication

x-idempotency-key
string

Unique key to prevent duplicate transaction creation

Path Parameters

walletLocator
string
required

A wallet locator can be of the format:

  • <walletAddress>
  • email:<email>:<chainType>[:<walletType>][:alias:<alias>] (walletType defaults to 'smart')
  • userId:<userId>:<chainType>[:<walletType>][:alias:<alias>] (white label user example)
  • phoneNumber:<phoneNumber>:<chainType>[:<walletType>][:alias:<alias>]
  • twitter:<handle>:<chainType>[:<walletType>][:alias:<alias>]
  • x:<handle>:<chainType>[:<walletType>][:alias:<alias>]
  • me:<chainType>[:<walletType>][:alias:<alias>] (Use when calling from the client side with a client API key)
  • chainType[:<walletType>]:alias:<alias>

Body

application/json

Input schema for creating a new transaction. The parameters vary based on the wallet type (EVM vs Solana vs Stellar).

params
object
required

Response

The transaction has been successfully created.

Complete transaction response including status, signing requirements, and wallet type specific data

chainType
enum<string>
required

The blockchain type of the wallet

Available options:
evm,
solana,
aptos,
sui,
stellar
walletType
enum<string>
required

The wallet type (smart or mpc)

Available options:
smart,
mpc
params
object
required
onChain
EVM smart wallet transaction data · object
required

Transaction data specific to EVM smart wallets

id
string
required

Unique identifier for the transaction

status
enum<string>
required

Current status of the transaction

Available options:
awaiting-approval,
pending,
failed,
success
createdAt
required

ISO timestamp when the transaction was created

Example:

"2024-01-01T00:00:00.000Z"

approvals
object

Complete approval data including requirements, pending and submitted signatures

completedAt

ISO timestamp when the transaction reached finality

Example:

"2024-01-01T00:00:00.000Z"

error
object

Error message if the transaction fails after submission

sendParams
object