if (chargeamount>0){ decline()}
if (chargeamount>0){ decline()}
If the card approves the pre-auth, they are (presumably, AFAIK) on the hook for that $1 if the merchant captures the pre-auth. If many (unpaying?) users start charging you $1...
- if less than 0.05, approve (as no merchant would actually charge a transaction for that amount, as they'd spend more than 5 cents on fees)
- if more than 5 cents but less than 1 USD, approve it only if the merchant is already known to offer free trials
You could be fancier:
- match on amount+merchantID combo, not just merchantID
- learn a model to deal with previously-unseen merchants
Merchants on the blacklist have all charges denied.
Any 'free trial' who actually captures a dollar from their clients will cause lots of chargebacks from their customers, so would go out of business quickly... (A chargeback costs a business ~$15 in fees)
This unit tests both the debit (of e.g. $.01) and a credit of the same amount against the target. They can also vary the amount, then ask the recipient to report the amount posted (so you can prevent additional fraud that way - attacker may have your bank account/routing details but no login to your statement/transaction listing).
It was definitely processed through the MC network, and not via Direct Debit (the closest UK equivalent to pulling funds via ACH).
I know this because the vendor didnt have my bank account number, because Direct Debits are processed in batch (not instantly), and because the app associated with the account showed it as a card transaction.