Not sure, why the Square Team need to see this. I already provided solution.
Here is the solution again.
If you are collecting appFee for yourself, set appFee as 0 amount as 0L (0 as long amount, ex: c#), and pass appFee (0 as you see) to Square. There will be no error at all.
There is no need to collect appFee for yourself, so the appFee is 0 for self-appFee.
There will be no error at all for TerminalCheckOut by passing 0 appFee for self-appFee on terminalCheckout API.
You can check merchant ID to verify this is ‘self-appFee.’ Check merchant ID, if merchant ID is your account or not. If is your account, it IS ‘self-appFee’ action, if NOT, it will be processed with ‘appFee.’
If you are doing self-appFee, SET appFee AS 0, otherwise set appFee for other merchants, using your ‘set’ appFee (set by you) for ‘APPLICATION FEE.’ This works fine.
However, in case you need refund on terminalCheckOut, EVEN with appFee of 0L (for self-appFee), you will get error again. → When you need to refund on terminalCheckOut on follow up on any reason, do NOT pass appFee for self-appFee.
Read carefully, you can refund card transaction, using PAYMENT API, NOT by terminalCheckOut API. This is out of topic here. I am just providing for reference.
You have NEVER ‘COLLECTED’ appFee for ‘self-appFee’ on terminalCheckOut as you see above. There is no need to pass ‘appFee’ on refund using Payment API when the initial transaction is ‘self’ transaction without appFee. Just do not pass appFee on refund if transaction was created by ‘self.’
This will guarantee 0 error message.
I am done, I don’t know what else I can help on this case.