Skip to main content

Credits and gas tokens

The order a fee is charged in

Cobo looks at three sources, in order:
  1. The gas tokens held by the wallet address itself
  2. The gas tokens in Billing Center
  3. Credits
If none of them is enough, the transaction fails. Whether step 1 is skipped depends on the sponsorship rule you selected. Step 2 requires gas token top-up to be enabled; without it, the fee goes straight to step 3.

One fee is paid in full by a single source

When a source is not enough, the whole fee moves to the next source โ€” the next source does not top up the difference.For example: the address holds 0.003 ETH and the transaction needs 0.005 ETH. Billing Center does not add the missing 0.002. It pays the full 0.005, and the 0.003 already in the address is left untouched.The same applies further down: if Billing Centerโ€™s gas tokens fall short, the entire fee is charged to Credits instead โ€” the gas token balance is not partially spent first.
This matters for reconciliation: every fee in your transaction records is tagged with exactly one payment source โ€” Paid with Credits, or Paid with gas token.

Cobo Portal and the API follow different rules

The per-chain sponsorship rules and the deduction preference apply only to transactions initiated through the API. Transfers initiated from Cobo Portal do not read those settings.

Transfers initiated from Cobo Portal

The behavior is fixed per chain and is not affected by those settings: In addition, when a Portal transfer is sponsored and gas tokens fall short, the entire fee is charged to Credits. To stop Billing Center from covering a particular Portal transfer, choose that option in the transfer dialog.

Transactions initiated through the API

How the fee is paid is determined by the auto_fuel parameter in the request. When the parameter is omitted it defaults to UsePortalPreference, which follows the per-chain sponsorship rules configured in Settings. When another value is passed explicitly, the request decides and the page configuration is not read.
For all accepted values and request examples, see the Transfer token endpoint in the Developer Hub.