As a developer, I currently have to use third-party APIs to take card payments via a card processor, incurring merchant and processing fees.
What I’d LIKE to be able to do is encourage my customers to get a Monzo card and link it to their account. In so doing they’d be authorizing me to take payments as required, debiting their Monzo account and crediting mine, which I’d do by issuing payment requests via a Merchant API. I’m hoping that since the transactions would all be Monzo-Monzo, that transaction fees would be considerably less than Visa/MC (or even free given that transfers between friends are).
Off the top of my head, I’d suggest the provision of methods along the lines of:
LinkCard(merchantId, cardNumber, cardholderName, expiryDate, CVV)
Allows a Monzo cardholder to authorise a merchant to take payments directly from their card. Returns a token to identify the card for other API calls, so that the merchant does not need to store card details, thus avoiding much of the pain of PCI compliance.UnlinkCard(merchantId, cardToken)
Allows a Monzo cardholder to revoke a merchant’s authorisation to take paymentsPay(merchantId, cardToken, isoCurrency, amount, narrative)
Request immediate paymentPreAuth(merchantId, cardToken, isoCurrency, amount, narrative, duration)
Ring-fence an amount on the cardholder’s account for future payment. This amount is reserved for the specified duration (max 1 week maybe?) and cannot be spent by the cardholder. Returns a token if successful, or an error if sufficient funds are not availableCompleteAuth(merchantId, cardToken, authToken, amount)
Completes a PreAuth payment. The amount requested for payment may be up to the amount requested during the pre-auth. An amount of 0.00 effectively cancels the pre-auth. There is potential for an account to have insufficient funds if the transaction currency differs from the account currency owing to rate movements - maybe the FX rate at the point of pre-auth should be used, rather than at the point of completion.
The advantages of such an API are:
- I can pass on some/all of the transaction cost savings to my customers, this making the service cheaper for them
- In so doing, I can encourage more people to take-up / use Monzo (a worthy quest, if ever there was one!)