See "How to Attach Files" at the top of the page so you can keep more of your hair
Many/most developers will tell you that it's bad form to store calculations. I'm not sure of what your underlying problem is, thus it's pretty much impossible to suggest anything specific, but I do understand how you can create a circular reference. Don't know what you did to create one other than to say something involved in the calculation becomes updated by the calculation, creating a never ending loop of calculations. To fix that, consider sentence #2 above.
Your db may need a table of charges to identify all types. As you discover a new one, you add a record for the type - you don't add another field to handle it. If that would be your approach, maybe you need to look at db normalization - can't say for sure. Also impossible to say much about query design at this point because it goes hand in hand with how you want to design your forms. One way might be to use a main form for invoice details and totals but have a sub form for charges (totals calculated in main form based on subform records). That would be the most flexible - 2 charges, 2 subform records; 4 charges, 4 subform records. You'd never need to add a query field or a form control or bind that control to a new field. Many ways to skin the proverbial cat.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.