Fees and sending

CoinVertus API: network fees, source selection, send plans, confirmation, tasks and their statuses.

API address: https://api.coinvertus.net/v1

Sending: the flow

  1. getfee — network fee at the fast, normal, low levels and the service fee; spendinfo — which addresses the funds will come from.
  2. preparetx — the transfer plan: sources, recipients, fee, steps. The plan reserves nothing and lives 5 minutes (expires_at).
  3. Check the plan and confirm it: posttx with prepare_id and confirm = HMAC-SHA256(key secret, “key_id.fingerprint.prepare_confirm.prepare_time”), where key_id is the ID of the key that prepared the plan.
  4. posttx queues the task and charges the service fee; the queue sends the transfer within seconds. The outcome — task/{TASK_ID} or the task.done webhook.
FieldDescription
toRecipients: address and amount; tag is a destination tag, comment is a text for the recipient up to 120 characters where the network supports it. Several recipients (up to 100) only for pairs with multi_recipient; with send_all — one recipient without amount.
fromYour source addresses (address); without from, addresses are picked automatically. In account-based networks — one address.
orderSource selection order: desc (default) — larger addresses first, asc — smaller first.
feepreparetx: fast, normal (default) or low; in UTXO networks also a numeric rate in fee_rate_unit. In account-based networks only normal; for tokens that pay for energy also rent or burn.
changepreparetx, UTXO networks: where change goes — auto (default, the address of the largest input), new (a new address) or your own address in this network.
send_allpreparetx: true sends everything from the sources minus the fee.

getfee and spendinfo

getfee takes the same to, from, order. fee_coin is the network fee coin (for a token — the network coin); fast, normal, low are amount plus five currencies, or null when the network has no such level or the amount with the fee does not fit at it (fits nowhere — 409 A018); service_fee_usd is the service fee; extra lists additional costs.

{
    "coin": "DOGE",
    "network": "dogecoin-mainnet",
    "fee_coin": "DOGE",
    "fast": {
        "amount": "0.04452",
        "usd": "0.2",
        "eur": "0.01",
        "rub": "0.5",
        "cny": "0.04",
        "inr": "0.47"
    },
    "normal": {
        "amount": "0.02226",
        "usd": "0.1",
        "eur": "0.01",
        "rub": "0.5",
        "cny": "0.04",
        "inr": "0.47"
    },
    "low": null,
    "service_fee_usd": "0.10",
    "extra": []
}
extra.typeMeaning
gasThe token address lacks the network coin: amount will come to it from another of your addresses, network_fee is the fee of that transfer.
rentWithout provider — creating the recipient token account, if it does not exist yet.
burn, rentWith provider — ways to pay for token energy: burning (burn) or renting (rent); selected marks the way fee normal will choose.

spendinfo takes to and order. sources are funded addresses in order: address, balance (available), locked (busy with an unfinished transfer), use — how much sending will take from it; enough tells whether it is sufficient. For a token use is the token amount; getfee and preparetx check the fee.

preparetx: the send plan

Request: network, to, from, order, fee, change, send_all. Response: the plan and the data to confirm it in posttx. Not enough payment balance for the service fee — 409 A020.

{
    "prepare_id": "prep_9a3f0c7d21b84e65f0a1c2d3",
    "prepare_confirm": "5c0e8d1f7a2b4c6d9e3f1a0b2c4d6e8f",
    "prepare_time": 1789647000,
    "expires_at": "2026-09-17T12:15:00Z",
    "fingerprint": "0995342725a2b11aa2260e7e84e6394754eef9dcc7412a222e2952b9d9589345",
    "coin": "DOGE",
    "network": "dogecoin-mainnet",
    "tx": {
        "sources": [
            {
                "address": "DLp4hPWtqM8sQZoyk2vRj3TfGcX5nA7bUe",
                "amount": "150.5"
            }
        ],
        "recipients": [
            {
                "address": "D8vFz4p1L37jdg47HXKtSHA5uYLYxbGgPD",
                "amount": "100"
            }
        ],
        "change": {
            "address": "DLp4hPWtqM8sQZoyk2vRj3TfGcX5nA7bUe",
            "amount": "50.47774"
        },
        "network_fee": "0.02226",
        "fee_coin": "DOGE",
        "fee_rate": "100",
        "fee_rate_unit": "koinu/vB",
        "size": 226,
        "replaceable": false
    },
    "steps": [
        {
            "type": "send"
        }
    ],
    "service_fee_usd": "0.10"
}
FieldDescription
tx.sourcesSource addresses and how much leaves each one, network fee included.
tx.recipientsRecipients and amounts; in networks with a tag or comment — tag and comment.
tx.changeUTXO change: address and amount; no change — null.
tx.network_fee, tx.fee_coinNetwork fee and its coin.
tx.fee_rate, tx.fee_rate_unit, tx.size, tx.replaceableUTXO networks: rate and its unit, transaction size, whether it can be replaced by a transaction with a higher fee.
tx.fee_payer, tx.rentTokens whose fee is paid by another of your addresses in the same transaction: that address and the charge for creating the recipient account.
stepsExecution steps: gas — topping up gas first (from, to, amount, network_fee), rent — renting energy (provider, energy, cost), send — the transfer itself.
expires_at, fingerprintPlan expiry and fingerprint: the plan can be confirmed only before expires_at.

posttx and the task

posttx takes prepare_id and confirm and returns the task object. Repeating it with the same prepare_id returns the same task, even after the plan expires, so posttx is safe to retry after a lost connection. A plan of another key or account — 404 A021, expired — 409 A021, wrong confirm — 400 A002. task/{TASK_ID} returns the same object.

{
    "task_id": "task_6f1c2a9b0d4e8f7a3c5b1d20",
    "task_info": "confirmed",
    "task_start": "2026-09-17T12:10:00Z",
    "task_sent": "2026-09-17T12:10:04Z",
    "task_done": "2026-09-17T12:20:12Z",
    "prepare_id": "prep_9a3f0c7d21b84e65f0a1c2d3",
    "coin": "DOGE",
    "network": "dogecoin-mainnet",
    "txid": "b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7",
    "gas_txid": null,
    "confirmations": 6,
    "error_code": null,
    "tx": {
        "sources": [
            {
                "address": "DLp4hPWtqM8sQZoyk2vRj3TfGcX5nA7bUe",
                "amount": "150.5"
            }
        ],
        "recipients": [
            {
                "address": "D8vFz4p1L37jdg47HXKtSHA5uYLYxbGgPD",
                "amount": "100"
            }
        ],
        "change": {
            "address": "DLp4hPWtqM8sQZoyk2vRj3TfGcX5nA7bUe",
            "amount": "50.47774"
        },
        "network_fee": "0.02226",
        "fee_coin": "DOGE",
        "fee_rate": "100",
        "fee_rate_unit": "koinu/vB",
        "size": 226,
        "replaceable": false
    },
    "service_fee_usd": "0.1"
}
task_infoMeaning
queueQueued; the task can be cancelled.
processingBeing sent.
gasWaiting for the token gas top-up to confirm.
rentWaiting for the energy rental.
sentIn the network, waiting for confirmations.
unknownThe send outcome is unknown: the node did not answer. Do not repeat the transfer — reconciliation will settle it and the task will move on by itself.
confirmedConfirmed.
failedNot done — the reason is in error_code.
droppedThe transaction dropped from the network without confirmations.
cancelledCancelled by the client.
FieldDescription
task_start, task_sent, task_doneQueue time, send time and final status time; not yet — null.
txid, gas_txid, confirmationsTransfer transaction, gas top-up transaction and confirmations; before sending — null.
error_codeReason code if the task was not done; otherwise null.
tx, service_fee_usdThe plan from preparetx and the service fee charged for the task.
error_codeMeaning
A009The network or node was unavailable for more than 30 minutes, or the send outcome is unknown.
A018By the time of sending, the address lacked funds.
A021The plan is outdated (balance, fee or address changed after preparetx) or the account is blocked.
A023The network rejected the transaction; the network fee was charged.
A025The energy rental failed.

task/{TASK_ID}/cancel cancels a task in queue — before the first attempt and between retries; once gas is sent or a rental is ordered, it cannot be cancelled. Later — 409 A024. Repeating it for a cancelled task returns that task.

Network specifics

  • UTXO networks: several recipients, fast, normal, low levels or your own rate, change via change; sources are inputs from your addresses.
  • Account-based networks: one source address and one recipient, only normal. An address with an unfinished transfer is busy until it confirms — the task waits up to 30 minutes.
  • Networks with destination tags (tag in assets): to[].tag goes to the recipient; incoming transfers to your address differ by tag in transfers, and getnewaddress issues a new tag for the same address.
  • A network with transfer comments: to[].comment is a text up to 120 characters; other networks reject the field (400 A002).
  • Tokens: the fee is paid in the network coin from the same address. If it is short, the plan starts with a gas step: a top-up from your largest free address in the network, and the token leaves after it confirms.
  • Tokens that pay for energy: fee normal rents from the cheapest connected provider, otherwise burns; rent or burn chooses manually. A failed rental — failed A025. Providers are connected in account settings, the “Helpers” tab.
  • Tokens whose fee and recipient account creation are paid in the same transaction by your address with the most network coin: tx has fee_payer and rent, there is no gas step.
  • Private networks: sending from one address, getfee is an upper estimate, the exact fee is in preparetx, privkey is unavailable; sending through the node wallet takes up to a few minutes.

Service fee and payment balance

The service fee follows your plan: a percent of the USD amount with a minimum and maximum; getfee and preparetx show it (service_fee_usd). It is charged from the payment balance on posttx and returned if the transfer did not reach the network, dropped or the task was cancelled. A confirmed transfer and one rejected by the network (failed A023) do not return it.

To keep sending from stalling on the balance, turn on auto top-up in your account (Payment balance → Auto top-up); the paybalance.low webhook warns when the balance falls below the threshold.