We would like clients to be able to pay their invoices online, in a single page checkout. The form would collect the Customer name, email, invoice #, amount, and all the Credit Card info needed to send to authorize.net. In reviewing Expresso Store documentation, it isn't clear to us how to let the customer set the amount.
I reached out to Exo:resso based on the suggestion that dynamic Prices was how to allow users to set the price and thereby the invoice amount. This was their answer…
You're on the right track. Dynamic prices are the way to go and allow the user to enter in their own amount for the purchase. When setting this up you apply this to the Channel when you add the Store Product Details field type so I'd make sure your invoices are setup to be in their own Channel. Then when you add the Store Product Details field to the Channel Field Group you'll see the "Field Options" table at the bottom (screenshot attached). Set "Enable Dynamic Prices" to "Yes".
Then when you setup the templates you just need to make sure you add a "price" and "item_qty" field to the Product Form tag:
The "value" will be submitted by the user. Store always needs an item_qty field though so make sure you include it. Keep it hidden, as above, if you don't want to display this on the front-end.
Hope that helps.
I think you would need some AJAX to make it work all on one page, as there are two steps, the add to cart and the checkout.
Store doesn't allow users to input prices directly, but other users have reported setting up a product that is $1 and allowing the customer to set the quantity (labeled as amount) to set the number of dollars for the invoice.