> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daimo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create session

> Creates a new deposit session. Returns the session object including a client secret for client-side operations.



## OpenAPI

````yaml /openapi.json post /v1/sessions
openapi: 3.1.0
info:
  title: Daimo API
  version: 1.0.0
  description: Create deposit sessions, manage payment methods, and check session status.
servers:
  - url: https://api.daimo.com
security: []
paths:
  /v1/sessions:
    post:
      summary: Create session
      description: >-
        Creates a new deposit session. Returns the session object including a
        client secret for client-side operations.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSessionRequest'
            example:
              destination:
                type: evm
                address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                chainId: 8453
                tokenAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                amountUnits: '10.00'
              display:
                title: Deposit to Acme
                verb: Deposit
      responses:
        '201':
          description: Session created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSessionResponse'
              example:
                session:
                  sessionId: a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
                  status: requires_payment_method
                  destination:
                    type: evm
                    address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                    chainId: 8453
                    chainName: Base
                    tokenAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                    tokenSymbol: USDC
                    amountUnits: '10.00'
                  display:
                    title: Deposit to Acme
                    verb: Deposit
                  paymentMethod: null
                  metadata: null
                  clientSecret: d7a8f3b2e1c94a6db8f0e2a7c3d5b9f1
                  createdAt: 1700000000
                  expiresAt: 1700003600
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ErrorResponse'
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    CreateSessionRequest:
      type: object
      properties:
        destination:
          oneOf:
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - evm
                  description: Always "evm"
                address:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: Checksummed destination address
                chainId:
                  type: number
                  description: Destination chain ID (e.g. 8453 for Base)
                  example: 8453
                tokenAddress:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: Checksummed destination token address
                  example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                amountUnits:
                  type: string
                  description: >-
                    Fixed deposit amount in token units (e.g. "10.00" for $10
                    USDC)
                  example: '10.00'
                calldata:
                  type: string
                  pattern: ^0x[0-9a-fA-F]*$
                  description: >-
                    Hex-encoded calldata for a contract call on the destination
                    address
              required:
                - type
                - address
                - chainId
                - tokenAddress
            - type: object
              properties:
                type:
                  type: string
                  enum:
                    - solana
                  description: Always "solana"
                address:
                  type: string
                  pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                  description: Base58 destination address
                tokenAddress:
                  type: string
                  pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
                  description: Destination token mint (base58). USDC only.
                  example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                amountUnits:
                  type: string
                  description: >-
                    Fixed deposit amount in token units (e.g. "10.00" for $10
                    USDC)
                  example: '10.00'
              required:
                - type
                - address
                - tokenAddress
        display:
          type: object
          properties:
            title:
              type: string
              description: Title shown in the deposit modal
              example: Deposit to Acme
            verb:
              type: string
              description: One-word verb for CTAs (e.g. "Deposit")
              example: Deposit
            themeCssUrl:
              type: string
              description: URL to a custom theme CSS file
            paymentOptions:
              type: array
              items:
                anyOf:
                  - type: string
                    enum:
                      - AllWallets
                      - AllExchanges
                      - AllFiat
                      - AllAddresses
                      - ConnectedWallet
                      - AutoconnectInjectedWallets
                      - MetaMask
                      - Trust
                      - Phantom
                      - Rainbow
                      - BaseApp
                      - Bitget
                      - OKX
                      - Zerion
                      - Rabby
                      - Backpack
                      - Solflare
                      - Coinbase
                      - Binance
                      - Lemon
                      - MtPelerin
                      - CashApp
                      - Stripe
                      - Tron
                      - Interac
                      - ApplePay
                      - ACH
                      - SEPA
                      - JPYC
                      - ARS
                      - AccountDeposit
                      - ExternalChains
                      - Daimo
                      - World
                      - Family
                      - Farcaster
                      - MiniPay
                      - Revolut
                      - Wise
                      - MercadoPago
                      - Venmo
                      - AllPaymentApps
                      - Solana
                  - type: array
                    items:
                      type: string
                      enum:
                        - AllWallets
                        - AllExchanges
                        - AllFiat
                        - AllAddresses
                        - ConnectedWallet
                        - AutoconnectInjectedWallets
                        - MetaMask
                        - Trust
                        - Phantom
                        - Rainbow
                        - BaseApp
                        - Bitget
                        - OKX
                        - Zerion
                        - Rabby
                        - Backpack
                        - Solflare
                        - Coinbase
                        - Binance
                        - Lemon
                        - MtPelerin
                        - CashApp
                        - Stripe
                        - Tron
                        - Interac
                        - ApplePay
                        - ACH
                        - SEPA
                        - JPYC
                        - ARS
                        - AccountDeposit
                        - ExternalChains
                        - Daimo
                        - World
                        - Family
                        - Farcaster
                        - MiniPay
                        - Revolut
                        - Wise
                        - MercadoPago
                        - Venmo
                        - AllPaymentApps
                        - Solana
              description: Control which payment methods appear and in what order
          required:
            - title
            - verb
        metadata:
          type: object
          additionalProperties:
            type: string
          description: >-
            Key-value string pairs for your own use. For fiat sessions, set
            `email` to start at email OTP, or `phone` as an E.164 phone hint for
            Apple Pay.
          example:
            email: account@daimo.com
            phone: '+14155552671'
            orderId: '123'
        refundAddress:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          description: Address to receive funds if a contract call reverts
      required:
        - destination
        - display
    CreateSessionResponse:
      type: object
      properties:
        session:
          $ref: '#/components/schemas/Session'
      required:
        - session
    V1ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              description: Error category
              example: validation_error
            code:
              type: string
              description: Machine-readable error code
              example: invalid_parameter
            message:
              type: string
              description: Human-readable description
              example: invalid session create request
            param:
              type: string
              description: Parameter that caused the error
              example: body
          required:
            - type
            - code
            - message
      required:
        - error
    Session:
      allOf:
        - $ref: '#/components/schemas/SessionPublicInfo'
        - type: object
          properties:
            metadata:
              type:
                - object
                - 'null'
              additionalProperties:
                type: string
              description: >-
                Key-value metadata set at creation time. For fiat sessions, set
                `email` to start at email OTP, or `phone` as an E.164 phone hint
                for Apple Pay.
              example:
                email: account@daimo.com
                phone: '+14155552671'
                orderId: '123'
            clientSecret:
              type: string
              description: Per-session client secret
          required:
            - metadata
            - clientSecret
    SessionPublicInfo:
      type: object
      properties:
        sessionId:
          type: string
          description: Session ID
        status:
          type: string
          enum:
            - requires_payment_method
            - waiting_payment
            - processing
            - succeeded
            - bounced
            - expired
          description: Current session status
          example: requires_payment_method
        destination:
          $ref: '#/components/schemas/SessionDestination'
        display:
          $ref: '#/components/schemas/SessionDisplay'
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
        createdAt:
          type: number
          description: Unix timestamp (seconds)
          example: 1700000000
        expiresAt:
          type: number
          description: Unix timestamp (seconds)
          example: 1700003600
      required:
        - sessionId
        - status
        - destination
        - display
        - paymentMethod
        - createdAt
        - expiresAt
    SessionDestination:
      oneOf:
        - $ref: '#/components/schemas/SessionDestinationEvm'
        - $ref: '#/components/schemas/SessionDestinationSolana'
      discriminator:
        propertyName: type
        mapping:
          evm:
            $ref: '#/components/schemas/SessionDestinationEvm'
          solana:
            $ref: '#/components/schemas/SessionDestinationSolana'
    SessionDisplay:
      type: object
      properties:
        title:
          type: string
          description: Title shown in the payment modal
        verb:
          type: string
          description: One-word verb for CTAs
          example: Deposit
        themeCssUrl:
          type: string
          description: Custom theme CSS URL
      required:
        - title
        - verb
    PaymentMethod:
      oneOf:
        - $ref: '#/components/schemas/PaymentMethodEvm'
        - $ref: '#/components/schemas/PaymentMethodTron'
        - $ref: '#/components/schemas/PaymentMethodSolana'
        - $ref: '#/components/schemas/PaymentMethodStripe'
        - $ref: '#/components/schemas/PaymentMethodFiat'
        - type: 'null'
    SessionDestinationEvm:
      type: object
      properties:
        type:
          type: string
          enum:
            - evm
          description: Always "evm"
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          description: Destination address
        chainId:
          type: number
          description: Destination chain ID
          example: 8453
        chainName:
          type: string
          description: Destination chain name
          example: Base
        tokenAddress:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          description: Destination token address
          example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        tokenSymbol:
          type: string
          description: Destination token symbol
          example: USDC
        amountUnits:
          type: string
          description: Requested amount in token units
          example: '10.00'
        calldata:
          type: string
          pattern: ^0x[0-9a-fA-F]*$
          description: Hex-encoded calldata for contract calls
        delivery:
          type: object
          properties:
            txHash:
              type: string
              pattern: ^0x[0-9a-fA-F]*$
              description: Delivery transaction hash
            receivedUnits:
              type: string
              description: Amount actually received
          required:
            - txHash
            - receivedUnits
          description: Set once funds are delivered
      required:
        - type
        - address
        - chainId
        - chainName
        - tokenAddress
        - tokenSymbol
    SessionDestinationSolana:
      type: object
      properties:
        type:
          type: string
          enum:
            - solana
          description: Always "solana"
        address:
          type: string
          description: Destination address (base58)
          example: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
        tokenAddress:
          type: string
          description: Destination token mint (base58). USDC only.
          example: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
        tokenSymbol:
          type: string
          description: Destination token symbol
          example: USDC
        amountUnits:
          type: string
          description: Requested amount in token units
          example: '10.00'
        delivery:
          type: object
          properties:
            txHash:
              type: string
              description: Delivery transaction signature
            receivedUnits:
              type: string
              description: Amount actually received
          required:
            - txHash
            - receivedUnits
          description: Set once funds are delivered
      required:
        - type
        - address
        - tokenAddress
        - tokenSymbol
    PaymentMethodEvm:
      type: object
      properties:
        type:
          type: string
          enum:
            - evm
        receiverAddress:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          description: Address that receives user's funds
        source:
          $ref: '#/components/schemas/EvmSource'
        createdAt:
          type: number
      required:
        - type
        - receiverAddress
        - createdAt
    PaymentMethodTron:
      type: object
      properties:
        type:
          type: string
          enum:
            - tron
        receiverAddress:
          type: string
          description: Tron receiver address
        source:
          $ref: '#/components/schemas/TronSource'
        createdAt:
          type: number
      required:
        - type
        - receiverAddress
        - createdAt
    PaymentMethodSolana:
      type: object
      properties:
        type:
          type: string
          enum:
            - solana
        source:
          $ref: '#/components/schemas/SolanaSource'
        createdAt:
          type: number
      required:
        - type
        - createdAt
    PaymentMethodStripe:
      type: object
      properties:
        type:
          type: string
          enum:
            - stripe
        createdAt:
          type: number
      required:
        - type
        - createdAt
    PaymentMethodFiat:
      type: object
      properties:
        type:
          type: string
          enum:
            - fiat
        fiatMethod:
          type: string
          enum:
            - interac
            - ach
            - sepa
            - apple_pay
            - jpyc
            - ars
          description: Selected fiat method, when known
          example: interac
        createdAt:
          type: number
      required:
        - type
        - createdAt
    EvmSource:
      type: object
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          description: Checksummed Ethereum address
        chainId:
          type: number
        chainName:
          type: string
        tokenAddress:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          description: Checksummed Ethereum address
        tokenSymbol:
          type: string
        sentUnits:
          type: string
        txHash:
          type: string
          pattern: ^0x[0-9a-fA-F]*$
          description: Hex-encoded bytes
      required:
        - chainId
        - chainName
        - tokenAddress
        - tokenSymbol
        - sentUnits
    TronSource:
      type: object
      properties:
        address:
          type: string
        chainId:
          type: number
          enum:
            - 728126428
        chainName:
          type: string
          enum:
            - tron
        tokenAddress:
          type: string
        tokenSymbol:
          type: string
        sentUnits:
          type: string
        txHash:
          type: string
      required:
        - chainId
        - chainName
        - tokenAddress
        - tokenSymbol
        - sentUnits
    SolanaSource:
      type: object
      properties:
        address:
          type: string
        chainId:
          type: number
          enum:
            - 501
        chainName:
          type: string
          enum:
            - solana
        tokenAddress:
          type: string
        tokenSymbol:
          type: string
        sentUnits:
          type: string
        txHash:
          type: string
      required:
        - chainId
        - chainName
        - tokenAddress
        - tokenSymbol
        - sentUnits
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key passed as a Bearer token

````