<p>Outgoing child chain transactions require a fee denominated in the child chain token. Unlike when using NXT, 0 is a valid fee for sponsored child chain transactions.</p>

<p>For normal transactions, let the server calculate the child transaction fee, a value of feeNQT=-1 should be used, and a new feeRateNQTPerFXT parameter must be supplied, to indicate the exchange rate of child token NQT per whole ARDR to use when calculating the fee (since minimum fees can only be calculated in the parent chain token ARDR). </p>

<p>If feeRateNQTPerFXT is also set to -1, the server will query the currently known bundlers rates for this child chain, also subject to the minBundlerBalanceFXT limit on effective bundler account balance, and use the best one for the fee calculation.</p>

<p>Transaction fee in ARDR varies depending on the status of the recipient account, sendMoney to a new account will charge higher fee than sendMoney to an existing account so don't make any assumption about the ARDR fee the bundler will have to pay to bundle your transactions, unless you check first if the recipient account is new. </p>

<p>One way to do this is to invoke the getAccount API on the recipient account and check for errorCode 5 in the response, then predict the fee according to the current minimum fee specifications. </p>

<p>A more robust approach is to submit the transaction when setting the broadcast parameter to false then read the minimumFeeFQT field from the response which indicates the minimum required fee in ARDR the bundler will pay for this transaction.</p>

<p>Bundlers rates cannot be trusted blindly as they may change based on market conditions, the returned transaction JSON including the fees calculated should be reviewed by the user. </p>

<p>The bundler rate used will be returned in the bundlerRateNQTPerFXT JSON field, -1 if no bundlers are known for the chain. </p>

CC BY-SA 4.0
2018-09-27T05:59:30.697Z
If I transfer an asset to a new account, does it apply the same rule that the fees will be higher? So if my request becomes: "requestType=transferAsset&secretPhrase=blablabla&chain=ignis&asset=blablabla&recipient=ARDOR-blablablablabla&quantityQNT=1000&feeNQT=-1& feeRateNQTPerFXT=-1&deadline=60" then the fee calculation should be automatic?
TheWireMaster
CC BY-SA 4.0
2018-09-27T07:28:08.740Z
The transaction fee is higher only if the transaction registers a new public key on the blockchain. This happens when submitting a transaction from a new account or when sending a transaction to a new recipient account while announcing their public key to the network using the "recipientPublicKey" parameter. Where "new" means, not registered on the blockchain.
lyaffe
CC BY-SA 4.0
2018-09-26T09:05:53.000Z
2018-09-26T09:05:53.000Z
lyaffe
<p>let's suppose I send this request to the blockchain: </p>

<p>"requestType=transferAsset&amp;secretPhrase=blablabla&amp;chain=ignis&amp;asset=blablabla&amp;recipient=ARDOR-blablablablabla&amp;quantityQNT=1000&amp;feeNQT=1000000&amp;deadline=60" </p>

<p>how does it work with the bundlers? I mean I set there a feeNQT that is 1000000 but not sure if that has to match an existing bundler rate or if that lets me bundle my transaction. 
Thanks</p>

<ardor><bundler>
Ardor: defining fee & bundler question
TheWireMaster
# Ardor: defining fee & bundler question

(Asked by: username_0 on 2018-09-26)

let's suppose I send this request to the blockchain:

"requestType=transferAsset&secretPhrase=blablabla&chain=ignis&asset=blablabla&recipient=ARDOR-blablablablabla&quantityQNT=1000&feeNQT=1000000&deadline=60"

how does it work with the bundlers? I mean I set there a feeNQT that is 1000000 but not sure if that has to match an existing bundler rate or if that lets me bundle my transaction.
Thanks

**Tags:** ardor, bundler


---

## 1 answers

### Answer by username_1 on 2018-09-26. Score: 6 | Accepted answer

Outgoing child chain transactions require a fee denominated in the child chain token. Unlike when using NXT, 0 is a valid fee for sponsored child chain transactions.

For normal transactions, let the server calculate the child transaction fee, a value of feeNQT=-1 should be used, and a new feeRateNQTPerFXT parameter must be supplied, to indicate the exchange rate of child token NQT per whole ARDR to use when calculating the fee (since minimum fees can only be calculated in the parent chain token ARDR).

If feeRateNQTPerFXT is also set to -1, the server will query the currently known bundlers rates for this child chain, also subject to the minBundlerBalanceFXT limit on effective bundler account balance, and use the best one for the fee calculation.

Transaction fee in ARDR varies depending on the status of the recipient account, sendMoney to a new account will charge higher fee than sendMoney to an existing account so don't make any assumption about the ARDR fee the bundler will have to pay to bundle your transactions, unless you check first if the recipient account is new.

One way to do this is to invoke the getAccount API on the recipient account and check for errorCode 5 in the response, then predict the fee according to the current minimum fee specifications.

A more robust approach is to submit the transaction when setting the broadcast parameter to false then read the minimumFeeFQT field from the response which indicates the minimum required fee in ARDR the bundler will pay for this transaction.

Bundlers rates cannot be trusted blindly as they may change based on market conditions, the returned transaction JSON including the fees calculated should be reviewed by the user.

The bundler rate used will be returned in the bundlerRateNQTPerFXT JSON field, -1 if no bundlers are known for the chain.

> **Comments:**
> **username_0**: If I transfer an asset to a new account, does it apply the same rule that the fees will be higher? So if my request becomes: "requestType=transferAsset&secretPhrase=blablabla&chain=ignis&asset=blablabla&recipient=ARDOR-blablablablabla&quantityQNT=1000&feeNQT=-1& feeRateNQTPerFXT=-1&deadline=60" then the fee calculation should be automatic?  
> **username_1**: The transaction fee is higher only if the transaction registers a new public key on the blockchain. This happens when submitting a transaction from a new account or when sending a transaction to a new recipient account while announcing their public key to the network using the "recipientPublicKey" parameter. Where "new" means, not registered on the blockchain.  

---

