LlRequestPermissions(llGetOwner(), PERMISSION REFUND);

Currently, any script that processes payment TO an avatar needs DEBIT permission to be able to refund the paying avatar if the amount payed was incorrect or something else went wrong. Apart from the problem that PERMISSION_DEBIT is currently limitless, meaning a vendor processing L$ 10 payments needs permission to llGiveMoney(to_some_avatar, unlimited_amount), there is also conceptually a big difference between REFUNDING money or GIVING money. I don't think a function llRefundMoney is needed, but it would be very good if the difference could be expressed in permissions. You could consider changing the color of the dialog box for request DEBIT permission from blue to red (after all, it's abuse sensitive.. blue can be a bit misleading). You could then have a yellow box for request REFUND permission. You would then restrict llGiveMoney, when called under REFUND permission, to a) Only be called from within a money event context b) Limit the amount given to the amount received in the money event.

Furthermore I suggest you add a 'budget' parameter to DEBIT permission, so any scripts that need to give money at will to operate can be restricted in their money-giving abilities.

For an illustration of the problems we currently have with DEBIT_PERMISSION, here are possible fraud scenarios:

Disguised-request-debit fraud

Users will give the DEBIT permission because it is expected that the object will ask for it. We need to have a budget parameter here so the dialog can say: .. wants to: Take a maximum of L$ 25 from you. Is this ok?

Request-debit-on-payment fraud

The user will see:

How many users do you trust with your money and this series of events?