Error - "Fee cap less than block base fee"

When attempting to broadcast a transaction you may get an error looking as follows or similar:

{
    "statusCode": 403,
    "errorCode": "sc.operation.failed",
    "message": "Unable to transfer assets. Please check, that your address contains all the tokens you want to transfer.",
    "cause": "Returned error: fee cap less than block base fee: address ###, gasFeeCap: 14597473823 baseFee: 15146212371"
  }

The error message occurs because the gasFeeCap (max fee per gas) specified for the transaction is less than the block base fee required for processing it.

On EVM chains, the base fee is a dynamic minimum fee per gas unit that fluctuates depending on network demand. In Tatum based REST API endpoints, we use GasPrice as gasFeeCap.

Why This Happens

  • gasFeeCap: The maximum fee per gas the transaction can pay, derived from GasPrice in Tatum’s API.
  • baseFee: A network-determined minimum fee that must be met for the transaction to be processed.
  • If the gasFeeCap is less than the baseFee, the transaction will be rejected by the network.

Recommended Solutions

  1. Retry the Transaction
    Network fees fluctuate rapidly. Retrying the transaction can succeed if the baseFee drops below the auto-calculated gasFeeCap.
    Steps:

    1. Wait a short time
    2. Retry sending the transaction.
  2. Set Manual Gas Fees
    If retrying does not resolve the issue, you can manually set the gas fees to ensure they account for network fluctuations.
    How to Set Manual Fees:

    1. Estimate Fees: Follow Tatum's guide on fee estimation to calculate appropriate values for GasPrice and GasLimit.
    2. Include Manual Fees in the Transaction - Example request:
      curl --location 'https://api.tatum.io/v3/blockchain/sc/custodial/transfer' \
      --header 'Content-Type: application/json' \
      --header 'x-api-key: {YOUR_API_KEY}' \
      --data '{
          "chain": "ETH",
          "custodialAddress": "0x73b10492E49B7Ce4cc8dD7F80F38147Ad8DA5Bdf", // Your "Slave GP Contract Address"
          "recipient": "0x5593549ead3b3bd6e4b049ed607ec0f422208298",
          "contractType": 0, // ERC-20 token transfer == 0
          "amount": "10",
          "tokenAddress":"0x03cee0939F57855EB95437f4a0EFA7B1AfBFA4c6", // The ContractAddress of the ERC-20 token
          "fromPrivateKey": "####" // Your "Master GP Address" PrivateKey
          "fee": {
              "gasLimit": "68474",
              "gasPrice": "50" //Units in Gwei!
          }
      }