---
title: "Create order."
method: POST
path: "/orders"
---

# Create order.

`POST /orders`

## Request body

- OrderRequest
  - `source` SourceAccount, required
    - `asset` union, required
      - 'arbitrum:wbtc' | 'ethereum:wbtc' | 'arbitrum:ibtc' | 'base:cbbtc' | 'bitcoin:btc' | 'bnbchain:btcb' | 'botanix:btc' | 'citrea:cbtc' | 'ethereum:cbbtc' | 'ethereum:usdt' | 'hyperevm:ubtc' | 'litecoin:ltc' | 'monad:mon' | 'monad:usdc' | 'solana:cbbtc' | 'solana:sol' | 'solana:usdc' | 'starknet:wbtc' | 'tron:usdt' — Mainnet
      - 'arbitrum_sepolia:wbtc' | 'ethereum_sepolia:wbtc' | 'alpen_signet:btc' | 'alpen_testnet:sbtc' | 'alpen_testnet:usdc' | 'arbitrum_sepolia:ibtc' | 'arbitrum_sepolia:seed' | 'arbitrum_sepolia:usdc' | 'base_sepolia:cbltc' | 'base_sepolia:cbxrp' | 'base_sepolia:ibtc' | 'base_sepolia:usdc' | 'base_sepolia:usdt' | 'base_sepolia:wbtc' | 'bitcoin_testnet:btc' | 'bnbchain_testnet:wbtc' | 'citrea_testnet:cbbtc' | 'citrea_testnet:cbtc' | 'citrea_testnet:usdc' | 'citrea_testnet:usdt' | 'citrea_testnet:wbtc' | 'citrea_testnet:wcbtc' | 'ethereum_sepolia:usdc' | 'litecoin_testnet:ltc' | 'monad_testnet:cbbtc' | 'monad_testnet:usdc' | 'solana_testnet:cbbtc' | 'solana_testnet:sol' | 'solana_testnet:usdc' | 'starknet_sepolia:wbtc' | 'tron_shasta:usdt' | 'tron_shasta:wbtc' | 'xrpl_testnet:xrp' — Testnet
    - `owner` string, required — Source address of the user.
    - `delegate` string, nullable — **(Optional)** Executes the swap on behalf of the user. Use this when calling Garden from your own smart contract; provide your contract’s address here.
    - `amount` string, required
  - `destination` DestinationAccount, required
    - `asset` union, required
      - 'arbitrum:wbtc' | 'ethereum:wbtc' | 'arbitrum:ibtc' | 'base:cbbtc' | 'bitcoin:btc' | 'bnbchain:btcb' | 'botanix:btc' | 'citrea:cbtc' | 'ethereum:cbbtc' | 'ethereum:usdt' | 'hyperevm:ubtc' | 'litecoin:ltc' | 'monad:mon' | 'monad:usdc' | 'solana:cbbtc' | 'solana:sol' | 'solana:usdc' | 'starknet:wbtc' | 'tron:usdt' — Mainnet
      - 'arbitrum_sepolia:wbtc' | 'ethereum_sepolia:wbtc' | 'alpen_signet:btc' | 'alpen_testnet:sbtc' | 'alpen_testnet:usdc' | 'arbitrum_sepolia:ibtc' | 'arbitrum_sepolia:seed' | 'arbitrum_sepolia:usdc' | 'base_sepolia:cbltc' | 'base_sepolia:cbxrp' | 'base_sepolia:ibtc' | 'base_sepolia:usdc' | 'base_sepolia:usdt' | 'base_sepolia:wbtc' | 'bitcoin_testnet:btc' | 'bnbchain_testnet:wbtc' | 'citrea_testnet:cbbtc' | 'citrea_testnet:cbtc' | 'citrea_testnet:usdc' | 'citrea_testnet:usdt' | 'citrea_testnet:wbtc' | 'citrea_testnet:wcbtc' | 'ethereum_sepolia:usdc' | 'litecoin_testnet:ltc' | 'monad_testnet:cbbtc' | 'monad_testnet:usdc' | 'solana_testnet:cbbtc' | 'solana_testnet:sol' | 'solana_testnet:usdc' | 'starknet_sepolia:wbtc' | 'tron_shasta:usdt' | 'tron_shasta:wbtc' | 'xrpl_testnet:xrp' — Testnet
    - `owner` string, required — Destination address of the user.
    - `amount` string, required
  - `slippage` integer — **(Optional)** In BIPS (base index points), 100 bips = 1%. When not specified, the slippage configured in app settings is used, or zero if no default is configured.
  - `nonce` string — **(Optional)** Custom nonce for the order. If not provided, one will be generated.
  - `solver_id` string — **(Optional)** Specific solver ID to use for this order.
  - `affiliate_fees` AffiliateFee[] — **(Optional)** Add an [affiliate fee](/developers/affiliate-fees) to each swap, defined in bips (100 bips = 1%).
    - `address` string — Address of the affiliate.
    - `asset` union
      - 'arbitrum:usdc' | 'arbitrum:cbbtc' | 'base:usdc' | 'base:cbbtc' | 'ethereum:usdc' | 'ethereum:cbbtc' — Mainnet
      - 'arbitrum_sepolia:usdc' | 'base_sepolia:usdc' | 'citrea_testnet:usdc' | 'citrea_testnet:cbbtc' | 'ethereum_sepolia:usdc' | 'monad_testnet:usdc' | 'monad_testnet:cbbtc' — Testnet
    - `fee` integer — In BIPS (base index points), 100 bips = 1%.

## Response `200`

Object with required information to initiate order on source chain.

- CreateOrderResponse
  - `status` 'Ok' | 'Error'
  - `error` string, nullable
  - `result` union
    - BitcoinInitiateRequest
      - `order_id` string, required — A unique identifier for the order.
      - `to` string, required — The address of the recipient.
      - `amount` integer, required — The amount to be sent.
    - BitcoinInitiateRequest
      - `order_id` string, required — A unique identifier for the order.
      - `to` string, required — The address of the recipient.
      - `amount` integer, required — The amount to be sent.
    - EVMInitiateRequest
      - `order_id` string, required — A unique identifier for the order.
      - `approval_transaction` EVMTransaction, required
        - `to` string
        - `value` string
        - `chain_id` integer
        - `data` string
        - `gas_limit` integer
      - `initiate_transaction` EVMTransaction, required
        - `to` string
        - `value` string
        - `chain_id` integer
        - `data` string
        - `gas_limit` integer
      - `typed_data` EVMTypedData, required
        - `types` object
          - `EIP712Domain` object[]
            - `name` string
            - `type` string
        - `message` object
          - `redeemer` string
          - `timelock` integer
          - `amount` integer
          - `secretHash` string
        - `domain` object
          - `name` string
          - `version` string
          - `chainId` string
          - `verifyingContract` string
    - EVMInitiateRequest
      - `order_id` string, required — A unique identifier for the order.
      - `approval_transaction` EVMTransaction, required
        - `to` string
        - `value` string
        - `chain_id` integer
        - `data` string
        - `gas_limit` integer
      - `initiate_transaction` EVMTransaction, required
        - `to` string
        - `value` string
        - `chain_id` integer
        - `data` string
        - `gas_limit` integer
      - `typed_data` EVMTypedData, required
        - `types` object
          - `EIP712Domain` object[]
            - `name` string
            - `type` string
        - `message` object
          - `redeemer` string
          - `timelock` integer
          - `amount` integer
          - `secretHash` string
        - `domain` object
          - `name` string
          - `version` string
          - `chainId` string
          - `verifyingContract` string
    - StarknetInitiateRequest
      - `order_id` string, required — A unique identifier for the order.
      - `approval_transaction` StarknetTransaction, required
        - `calldata` string[]
        - `selector` string
        - `to` string
      - `initiate_transaction` StarknetTransaction, required
        - `calldata` string[]
        - `selector` string
        - `to` string
      - `typed_data` StarknetTypedData, required
        - `domain` object
          - `chainId` string
          - `name` string
          - `revision` string
          - `version` string
        - `message` object
          - `amount` object
            - `high` string
            - `low` string
          - `redeemer` string
          - `secretHash` integer[]
          - `timelock` string
        - `primaryType` string
        - `types` object
          - `Initiate` object[]
            - `name` string
            - `type` string
          - `StarknetDomain` object[]
            - `name` string
            - `type` string
    - SolanaInitiateRequest
      - `order_id` string, required — A unique identifier for the order.
      - `versioned_tx` string, required
      - `versioned_tx_gasless` string
    - SuiInitiateRequest
      - `order_id` string, required — A unique identifier for the order.
      - `ptb_bytes` integer[], required

---

[API](https://skmtc.net/garden/apis/garden-api.md) · [All operations](https://skmtc.net/garden/apis/garden-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/garden/garden-api/versions/3a0255377dac/schema)
