---
title: "Send BCH to Bitcoin Cash addresses"
method: POST
path: "/v3/bcash/transaction"
tags: ["Bitcoin Cash (BCH) - Tatum API"]
---

# Send BCH to Bitcoin Cash addresses

`POST /v3/bcash/transaction`

/v3/bcash/transaction

**10 credits per API call**

Send BCH to blockchain addresses.

Bitcoin Cash transactions are based on UTXOs. "UTXO" stands for "Unspent Transaction Output". A UTXO is the amount of BCH that remains at a Bitcoin Cash address after a cryptocurrency transaction involving this address has been performed. The UTXO can then be used as input for a new cryptocurrency transaction. For more information the UTXO, see the [Bitcoin user documentation](https://developer.bitcoin.org/devguide/transactions.html).

You build a BCH transaction by sending BCH from UTXOs. Each UTXO is included in the transaction.

When an UTXO is entered into a transaction, the whole UTXO amount is included and must be spent. For example, address A receives two transactions, T1 with 1 BCH and T2 with 2 BCH. A transaction that consumes the UTXOs from both T1 and T2 will have an available amount of 3 BCH to spend:  
`1 BCH (from T1) + 2 BCH (from T2) = 3 BCH (to spend in total)`

You can send the assets to one or multiple recipients in one transaction. If you send the assets to multiple addresses, each address must have its own amount to receive.

**Paying the gas fee and receiving the change**  
When the amount that the recipients should receive is lower than the amount from the UTXOs, the difference between these two amounts is by default used as the gas fee for the transaction. Because this amount may be considerable and you may not want to spend it all on the gas fee, you can explicitly specify the fee amount and the blockchain address where any extra funds remaining after covering the fee will be sent (the `fee` and `changeAddress` parameters in the request body, correspondingly).

**Signing a transaction**  
When sending BCH, you are charged a fee for the transaction, and you must sign the transaction with the private key of the blockchain address from which the fee will be deducted.

Providing the private key in the API is not a secure way of signing transactions, because the private key can be stolen or exposed. Your private keys should never leave your security perimeter. You should use the private keys only for testing a solution you are building on the **testnet** of a blockchain.

For signing transactions on the **mainnet**, we strongly recommend that you use the Tatum [Key Management System (KMS)](https://github.com/tatumio/tatum-kms) and provide the signature ID instead of the private key in the API. Alternatively, you can use the [Tatum JavaScript client](https://github.com/tatumio/tatum-js/tree/v2).

## Request body

- union
  - BchTransaction
    - `fromUTXO` object[], required — The array of transaction hashes, indexes of its UTXOs, and the private keys of the associated blockchain addresses
      - `txHash` string, required — The transaction hash of the UTXO to be spent
      - `index` number, required — The index of the UTXO to be spent
      - `privateKey` string, required — The private key of the blockchain address that holds the UTXO to be spent
    - `to` object[], required — The array of blockchain addresses to send the assets to and the amounts that each address should receive (in BCH). The difference between the UTXOs calculated in the <code>fromUTXO</code> section and the total amount to receive calculated in the <code>to</code> section will be used as the gas fee. To explicitly specify the fee amount and the blockchain address where any extra funds remaining after covering the fee will be sent, set the <code>fee</code> and <code>changeAddress</code> parameters.
      - `address` string, required — The blockchain address to receive the assets
      - `value` number, required — The amount to receive (in BCH)
    - `fee` string — The fee to be paid for the transaction (in BCH); if you are using this parameter, you have to also use the <code>changeAddress</code> parameter because these two parameters only work together.
    - `changeAddress` string — The blockchain address to send any extra assets remaning after covering the fee; if you are using this parameter, you have to also use the <code>fee</code> parameter because these two parameters only work together.
  - BchTransactionKMS
    - `fromUTXO` object[], required — The array of transaction hashes, indexes of its UTXOs, and the signature IDs of the associated blockchain addresses
      - `txHash` string, required — The transaction hash of the UTXO to be spent
      - `index` number, required — The index of the UTXO to be spent
      - `signatureId` string, uuid, required — The KMS identifier of the private key of the blockchain address that holds the UTXO to be spent
      - `signatureIdIndex` number — Index of the address in the wallet. Required when signatureId represents the mnenomic.
    - `to` object[], required — The array of blockchain addresses to send the assets to and the amounts that each address should receive (in BCH). The difference between the UTXOs calculated in the <code>fromUTXO</code> section and the total amount to receive calculated in the <code>to</code> section will be used as the gas fee. To explicitly specify the fee amount and the blockchain address where any extra funds remaining after covering the fee will be sent, set the <code>fee</code> and <code>changeAddress</code> parameters.
      - `address` string, required — The blockchain address to receive the assets
      - `value` number, required — The amount to receive (in BCH)
    - `fee` string — The fee to be paid for the transaction (in BCH); if you are using this parameter, you have to also use the <code>changeAddress</code> parameter because these two parameters only work together.
    - `changeAddress` string — The blockchain address to send any extra assets remaning after covering the fee; if you are using this parameter, you have to also use the <code>fee</code> parameter because these two parameters only work together.

## Response `200`

OK

- union
  - TransactionHash
    - `txId` string, required — The hash (ID) of the transaction
  - SignatureId
    - `signatureId` string, uuid, required — The internal Tatum ID of the prepared transaction for Key Management Sysytem (KMS) to sign<br/>This is different from the <code>signatureId</code> parameter that you provided in the request body. The <code>signatureId</code> parameter in the request body specifies the signature ID associated with the private key in KMS.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
- `403` — Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.
- `500` — Internal server error. There was an error on the server during the processing of the request.

---

[API](https://skmtc.net/tatum/apis/blockchain-data.md) · [All operations](https://skmtc.net/tatum/apis/blockchain-data/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tatum/blockchain-data/versions/8622ee4b8fae/schema)
