Adapting client-side code to the fee changes planned for 1.7:
This topic is for technical details on how a migration to dynamic, server-side calculated fees can be achieved.
Regardless of the exact fee values we set to take effect after the 1.7 hardfork, there will always be a need to adjust the fees in response to market conditions, so keeping a hardcoded fee of 1 NXT for most transaction types is no longer a viable approach for client applications. But hardcoding the logic to calculate minimum fees on the client side, and keeping it up to date with this and future fee changes is also not maintainable. Fortunately, we have the feature that submitting a transaction with feeNQT=0 will have the server calculate the minimum fee needed automatically, and this feature is alredy in production in the 1.5 and 1.6 branches. This works for transactions being signed on the server only, as once the transaction bytes are signed, it is no longer possible to change any of them, including the fee. But for client-side signing, the client can first submit the transaction with feeNQT=0, broadcast=false, and publicKey instead of secretPhrase, and allow the server to calculate the required fee and prepare the unsigned transaction, to be signed client-side after possibly confirming the fee with the user. To minimize the impact of fee changes in 1.7 and avoid having to hardcode any fee logic in the clients, developers should start modifying their code to take advantage of this method of fee calculation, without waiting for the first 1.7.0e release. A migration to prunable messages (achived by adding messageIsPrunable=true parameter when submitting the transaction) must also be started, without waiting for 1.7, and when using a permanent message is prefered and the user is willing to pay the higher fee, the future limit of 160 bytes should be kept in mind, possibly starting to enforce it in client-side applications even now.
To make the migration to dynamic server-side fee calculation even easier, we plan to add a configuration parameter in nxt.properties. When enabled (default will be disabled), the server will ignore invalid (lower than the minimum) fees submitted by the users, and will replace those with the minimum required fee, as if the user has specified a fee of 0. This can of course only work for unsigned transactions, if the transaction is already signed on the client side with an insufficient fee, that fee can no longer be changed by the server.
Source:
https://nxtforum.org/general-discussion/adapting-client-side-code-to-the-fee-changes-planned-for-1-7/