---
title: "Create Multiple Orders"
method: POST
path: "/orders/"
tags: ["orders"]
---

# Create Multiple Orders

`POST /orders/`

## Request

- Base URL: `https://api.copper.co/platform`
- URL: `https://api.copper.co/platform/orders/`
- Auth: none declared
- TypeScript: <https://skmtc.dev/copper-co/apis/copper-platform-api/docs/orders/post~2.ts> (a function with typed inputs; its response is checked against the schema)

Bulk orders creation. If the execution of an order fails, it will not affect the execution of other orders. Failed orders will be returned in the response. The bulk size should be less than 50 orders.

## Headers

- `Content-Type` string

## Request body

- CreateOrders
  - `orders` CreateOrder[], required: List of orders to create
    - `agentAddress` string: Agent address for orders created by agents on behalf of users
    - `agentName` string: Agent name for orders created by agents on behalf of users
    - `agentValidUntil` string: Expiration date (unix timestamp in millis) of Hyperliquid agent wallet
    - `amount` string: The amount of order in baseCurrency
    - `baseCurrency` string, required: The currency of the order amount
    - `blockchainTransactionType` 'send' | 'multi-withdraw' | 'account-set' | 'approve-hot-key' | 'approve-builder-fee' | 'allowance' | 'smart-call' | 'multi-smart-call' | 'activate' | 'activate-trading' | 'stake-delegation' | 'stake-nomination' | 'stake-undelegation' | 'complete-withdrawal' | 'stake-complete-deposit' | 'take-reward' | 'claim-builder-rewards' | 'pool-creation' | 'edit-pool' | 'governance-vote' | 'unjail' | 'importance-transfer' | 'transfer-stake' | 'rebond-stake' | 'chill' | 'cross-chain-send' | 'accept-deposit' | 'reject-deposit' | 'allocate' | 'reject-allocation' | 'create-allocation-request' | 'settle-allocations' | 'cancel-allocations' | 'create-referral' | 'set-referral' | 'set-trading'
    - `builderFeeAddress` string: Builder fee address for Hyperliquid builder approval and activation
    - `deliveryType` 'free-of-payment' | 'payment-vs-payment'
    - `description` string: The description of the order
    - `externalBroadcast` boolean: Sets broadcast mode. If true: manual broadcast. If false: automatic broadcast. Copper automatically broadcasts transactions to the network after fully signing
    - `externalOrderId` string, required: Unique order identifier from client (should be unique for the portfolio)
    - `feeLevel` 'low' | 'medium' | 'high'
    - `includeFeeInWithdraw` boolean: Indicates, whether the fee should be included in the withdrawal amount or added on top of it
    - `limitType` 'otc' | 'rfq'
    - `mainCurrency` string: The main currency of the base currency
    - `masterPassword` string: A SHA-256 encrypted hash of the withdrawal password (also known as master password), if required.
    - `memo` string: Withdraw memo (destination tag for XRP)
    - `netuid` string: Subnet Network ID in TAO blockchain
    - `nextTransferTo` WithdrawTarget[]: The list of next transfer targets for chained transfer orders
      - `cryptoAddressId` string
      - `portfolioId` string
      - `targetType` 'external' | 'portfolio', required
    - `optInReferralProgram` boolean: Opt in to the referral program during Hyperliquid activation
    - `orderType` 'sell' | 'buy' | 'deposit' | 'withdraw' | 'multi-withdraw' | 'wallet-message' | 'retrieved-deposit' | 'earn-reward' | 'earn-shared-reward' | 'claim-shared-reward' | 'cross-chain-deposit' | 'cross-chain-withdraw', required
    - `payload` string: Serialised [data](https://ethereum.org/en/developers/docs/transactions/#the-data-field) payload for a smart contract
    - `payloads` string[]: Serialised list of unsigned transactions. For Ethereum only type 0 (legacy) transactions are supported
    - `portfolioId` string, required: The ID of the portfolio where the order should be placed
    - `priceLimit` string: The price of the order in quote currency, only applicable for settle orders
    - `quoteAmount` string: The amount of order in quoteCurrency
    - `quoteCurrency` string: The currency of the quote amount
    - `quoteMainCurrency` string: The main currency of the quote currency
    - `referralCode` string: Referral code
    - `toAddress` string: The address where the funds should be transferred
    - `toCounterpartyId` string: The ID of the counterparty to transfer money to
    - `toCryptoAddressId` string: In case of a withdrawal, the destination crypto address ID from an Address Book
    - `toPortfolioId` string: In case of a withdrawal on a different portfolio, the portfolio ID of the destination account
    - `toReceivers` OrderReceiver[]: Is used for multi withdrawal orders instead of toAddress
      - `amount` string: The amount of order in baseCurrency
      - `toAddress` string: The address where the funds should be transferred
      - `toCryptoAddressId` string: In case of a withdrawal, the destination crypto address ID from the Address Book
    - `userAbstract` string

## Response `200`

OK

- Orders
  - `orders` Order[], required
    - `amount` string, required: Amount of order in baseCurrency
    - `baseCurrency` string, required: Base currency of the order
    - `createdAt` string, required: Order creation timestamp
    - `createdBy` string: Creator user id
    - `externalOrderId` string, required: The order ID in the external system
    - `extra` OrderExtra
      - `availableCoSigners` string[]: The ids of user who can approve an order. If not set, anybody with Approver permission can approve
      - `availableSnapshot` string: Snapshot of a wallet available balance at the moment of order termination
      - `balanceSnapshot` string: Snapshot of a wallet balance at the moment of order termination
      - `blockchainTransactionType` 'send' | 'multi-withdraw' | 'account-set' | 'approve-hot-key' | 'approve-builder-fee' | 'allowance' | 'smart-call' | 'multi-smart-call' | 'activate' | 'activate-trading' | 'stake-delegation' | 'stake-nomination' | 'stake-undelegation' | 'complete-withdrawal' | 'stake-complete-deposit' | 'take-reward' | 'claim-builder-rewards' | 'pool-creation' | 'edit-pool' | 'governance-vote' | 'unjail' | 'importance-transfer' | 'transfer-stake' | 'rebond-stake' | 'chill' | 'cross-chain-send' | 'accept-deposit' | 'reject-deposit' | 'allocate' | 'reject-allocation' | 'create-allocation-request' | 'settle-allocations' | 'cancel-allocations' | 'create-referral' | 'set-referral' | 'set-trading'
      - `clearLoop` boolean: Indicates whether the order is a part of ClearLoop
      - `clearLoopExtra` ClearLoopExtra
        - `clearLoopExternalNetted` boolean: Whether the order is linked to the ClearLoop multi-custody model that works by netting settlement amounts
        - `clearLoopSettlementId` string: Id uniquely identifying the ClearLoop settlement the order is part of
      - `clientAccountId` string: Unique client exchange's account identifier used for ClearLoop
      - `coSigners` string[]: The ids of user who has approved an order
      - `coSignersNumber` string: The number of required approves for an order
      - `confirmations` string: Number of confirmations for a blockchain transaction
      - `counterpartyPortfolioId` string
      - `deliveryType` 'free-of-payment' | 'payment-vs-payment'
      - `depositOrderId` string: The ID of a deposit order where a withdraw was made to
      - `depositOrigin` string
      - `depositTargetId` string: The ID of a deposit target where an order was made to
      - `description` string: The description of the order
      - `estimatedFees` FeeEstimation
        - `baseFeePerGas` string: The base fee for the block in Gwei
        - `estimatedTime` string: The estimated time in milliseconds for the transaction to be confirmed
        - `fee` string, required: The amount of the fee
        - `feeCurrency` string, required: The currency in which the fee is denominated
        - `feePerByte` MinimalUnit
        - `feeType` string
        - `gasLimit` MinimalUnit
        - `gasPriceGwei` string: The gas price in Gwei
        - `maxFeePerGas` string: The max gas fee wiling to pay in Gwei
        - `maxPriorityFeePerGas` string: The max priority fee wiling to pay in Gwei
        - `reportingCurrencyRate` string: The fee amount in the reporting currency
        - `transactionBytes` string: The number of bytes in the transaction
      - `externalBroadcast` boolean: Withdraw is requested to be processed by external system. In that case we don't broadcast it to blockchain
      - `feeLevel` 'low' | 'medium' | 'high'
      - `fees` FeeEstimation[]: The fees for an order
        - `baseFeePerGas` string: The base fee for the block in Gwei
        - `estimatedTime` string: The estimated time in milliseconds for the transaction to be confirmed
        - `fee` string, required: The amount of the fee
        - `feeCurrency` string, required: The currency in which the fee is denominated
        - `feePerByte` MinimalUnit
        - `feeType` string
        - `gasLimit` MinimalUnit
        - `gasPriceGwei` string: The gas price in Gwei
        - `maxFeePerGas` string: The max gas fee wiling to pay in Gwei
        - `maxPriorityFeePerGas` string: The max priority fee wiling to pay in Gwei
        - `reportingCurrencyRate` string: The fee amount in the reporting currency
        - `transactionBytes` string: The number of bytes in the transaction
      - `fromAddresses` string[]: List of addresses from which the deposit was made. This is an array because, on some blockchains like Bitcoin (BTC), the sending address can include multiple input UTXO addresses
      - `fromCounterpartyId` string: The ID of a counterparty where an order was made from
      - `fromCryptoAddress` CryptoAddress
        - `_embedded` CryptoAddressEmbedded
          - `currencyConfigurations` CurrencyConfiguration[]: Crypto address currency configuration
            - `createdAt` string, required: Created at timestamp
            - `createdBy` string, required: Created by user id
            - `cryptoAddressId` string, required: Crypto address id
            - `currency` string, required: Currency of an address
            - `currencyConfigurationId` string, required: Currency configuration id
            - `extra` CurrencyConfigurationExtra
            - `isWhitelist` boolean, required: Indicates, if an address is whitelisted
            - `lastUsedAt` string: Last used at
            - `portfolioIds` string[]: Portfolio ids, if address set for particular portfolios
            - `updatedAt` string: Last updated Updated at timestamp
            - `updatedBy` string: Updated by user id
        - `acceptTokens` boolean: Indicates an address can be used for tokens on the same blockchain network
        - `address` string, required: Address
        - `addressTags` AddressTag[]: Address tags
        - `addressType` 'externally-owned-account' | 'internal-account' | 'smart-contract' | 'payable-smart-contract', required
        - `category` 'smart-contract' | 'payable-smart-contract' | 'mining' | 'unknown' | 'self-hosted' | 'vasp'
        - `createdAt` string, required: Created at timestamp
        - `createdBy` string, required: Created by user id
        - `cryptoAddressId` string, required: Crypto address id
        - `currency` string, required: Currency of an address
        - `extra` CryptoAddressExtra
        - `isWhitelist` boolean, required: Indicates, if an address is whitelisted
        - `lastUsedAt` string: Last used at
        - `mainCurrency` string: Main currency of an address
        - `memo` string: Address memo (destination tag for XRP)
        - `name` string, required: Name of an address
        - `organizationId` string: Organization id
        - `portfolioIds` string[]: Portfolio ids, if address set for particular portfolios
        - `updatedAt` string: Last updated Updated at timestamp
        - `updatedBy` string: Updated by user id
      - `fromCryptoAddressId` string: The ID of a crypto address where an order was made from
      - `fromPortfolioId` string: The ID of a portfolio where an order was made from
      - `includeFeeInWithdraw` boolean: Indicates whether the fee should be included in the withdrawal amount or added on top of it
      - `invoiceId` string: The ID of an invoice where an order was made to
      - `marketPrice` string
      - `memo` string: Withdraw memo (destination tag for XRP)
      - `nextTransferTo` WithdrawTarget[]: The remain list of next transfer targets
        - `cryptoAddressId` string
        - `portfolioId` string
        - `targetType` 'external' | 'portfolio', required
      - `originalDepositAmount` string: Amount of the original deposit transaction
      - `partSigned` UploadPartSignedTx
      - `payload` string: Serialized [data](https://ethereum.org/en/developers/docs/transactions/#the-data-field) payload for a smart contract
      - `payloads` string[]: Serialized list of unsigned transactions. For Ethereum only type 0 (legacy) transactions are supported
      - `reportingCurrencyRate` string: The snapshot of a base currency rate at the moment of order creation
      - `reportingQuoteCurrencyRate` string: The snapshot of a quote currency rate at the moment of order creation
      - `signed` UploadFullSignedTx
      - `spenderAddress` string: For ETH Approve transaction store spender address
      - `terminatedReportingCurrencyRate` string: The snapshot of a base currency rate at the moment of order termination
      - `toAddress` string: The address where the funds should be transferred
      - `toCounterpartyId` string: The ID of a counterparty where an order was made to
      - `toCryptoAddressId` string: The ID of a crypto address where an order was made to
      - `toInvoiceId` string: The ID of an invoice where an order was made to
      - `toLendingInvoiceId` string: The ID of an lending invoice where an order was made to
      - `toPortfolioId` string: The ID of a portfolio where an order was made to
      - `totalQuoteAmount` string: The amount of a quote currency in an order
      - `transactionId` string: The blockchain transaction ID on an order
      - `transactionRequest` object: Data which needs to be passed to Copper Unlimited to sign the transaction
      - `transferAmount` string: Amount transferred from proxy to destination
      - `transferChainId` string: The ID to identify orders, created as a part of the same order chain
      - `transferDepositTargetId` string: The deposit target ID of the proxy address for the transfer
      - `transferFees` string: Network fees required for transferring from proxy to destination
      - `transferFeesCurrency` string: Currency of fees paid for transferring from proxy to destination
      - `transferTransactionId` string: The hash of the transaction transferring funds from proxy to destination
      - `withdrawFee` string: The amount of fees for the order
      - `withdrawOrderId` string: The ID of a withdraw order where a deposit was made from
    - `limitType` 'otc' | 'rfq'
    - `mainCurrency` string: Blockchain network of a `baseCurrency`
    - `orderId` string, required: Order ID
    - `orderType` 'sell' | 'buy' | 'deposit' | 'withdraw' | 'multi-withdraw' | 'wallet-message' | 'retrieved-deposit' | 'earn-reward' | 'earn-shared-reward' | 'claim-shared-reward' | 'cross-chain-deposit' | 'cross-chain-withdraw', required
    - `organizationId` string: Organization id
    - `portfolioId` string, required: Portfolio ID
    - `portfolioType` 'custody' | 'trading-vault' | 'trading' | 'external' | 'clearloop', required
    - `quoteCurrency` string: The quote currency of the order (in case of a settle order)
    - `quoteMainCurrency` string: Blockchain network of a `quoteCurrency`
    - `status` 'new' | 'waiting-funds' | 'reserving' | 'reserved' | 'queued' | 'validating-funds' | 'working' | 'waiting-approve' | 'co-sign-require' | 'approved' | 'processing' | 'executed' | 'canceled' | 'rejecting' | 'rejected' | 'declining' | 'declined' | 'suspending' | 'suspended' | 'blocked' | 'action-required' | 'accepting' | 'accepted' | 'require-initializer-approve' | 'waiting-counterparty-approve' | 'require-counterparty-approve' | 'ready-for-settlement' | 'settled' | 'part-signed-tx-added' | 'full-signed-tx-added' | 'rejected-part-signed-tx-added' | 'rejected-full-signed-tx-added' | 'accepted-part-signed-tx-added' | 'accepted-full-signed-tx-added' | 'awaiting-settlement' | 'master-password-required' | 'manual-resolving' | 'error' | 'pending-atomic-settlement-confirmation' | 'atomic-settlement-reservation-completed' | 'require-finalize' | 'waiting-accept-deposit' | 'waiting-reject-deposit', required
    - `terminatedAt` string: Order termination timestamp
    - `updatedAt` string: Order update timestamp

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `409`: Conflict

---

[API](https://skmtc.dev/copper-co/apis/copper-platform-api.md) - [All operations](https://skmtc.dev/copper-co/apis/copper-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/copper-co/apis/copper-platform-api/revisions/44296120fc7d?raw)
