Reforming Retail

Stripe Doesn’t Even Hide The Fact That They Screw Merchants on Refunds

Bet you thought all you had to do was beat the processor up on authorizations rates and you’d be a hero, eh?

Let us introduce you to a nice processor honeypot that most people are totally clueless about.

Whenever a customer buys something for $100, roughly $3 of that (in the US, at least, which is the last country to openly permit card extortion) gets sucked out to Interchange.

It would make sense that if that customer returned that item the merchant would get the $100 back, right?

Only if you had a conscience.

That $3 almost always disappears into the ether when returns are made.

Why?

Because Visa and Mastercard are duopolies who make the rules that everyone in the game of card processing plays by.

And boy do they absolutely love to arbitrarily enforce those rules.

The basics.

When a customer returns a purchase there are two ways to make a return: a void, and a refund.

Technically a void is called a reversal according to the card network rulebook. Payment historians believe the term void arose as old terminals were limited to 4-letter displays. Reversal was too long, so it became void.

A transaction can only be voided or reversed BEFORE it settles.

A transaction can only be refunded AFTER it settles.  

But much of the payments industry uses the terms void and refund interchangeably, which is just wrong.

Blame the idiot developers who toiled to simplify the idea of returning money to the cardholder without understanding the plumbing underneath.

This allows scumbags like Stripe to take total advantage of the returns process and in so doing create a nice windfall for themselves. 

According to Jason Kafer of Payments Therapist, when you send an authorization to the card networks, you’re really following the ISO 8583 standard and sending a 0100 message type. It’s a field called MTI (message transmission indicator).

Until the transaction settles, you can adjust the authorization message. One way to adjust it is to increment the value, which you would do by sending another 0100 message. Imagine taking multiple payments on a single transaction: that’s when you’d increment a transaction.  

Another way to adjust the authorization is with a reversal, which is a MTI code of 0400, which subtracts from the authorization amount. Reversals can be partial or full, but it decreases the authorization amount.

No Interchange is assessed when these messages are going back and forth, and the cardholder would know this because their bank statement will just show pending in place of the transaction.

Once that 0400 message is sent, the pending transaction gets removed from the cardholder’s statement and the transaction goes away.

And remember, no Interchange is assessed until the transaction is settled, so Interchange should always be available to the merchant in a voided transaction.

A refund is a discrete type of transaction made up of 3 subfields that indicate the direction of money movement: direction, from_account, and to_account.

For the purpose of the article, we’re ignoring subfields 2 and 3.

On the authorization message, a sale processing code is 00.

In a refund or a credit, the processing code is 20. This comes from Field 3 of ISO 8583 which we’ve pasted an example  below for reference: 

During a sale, Interchange is debited from the acquirer and credited to the issuer.

In a refund, the reverse happens. 

Yes, the merchant acquirer DOES in fact get a refund of Interchange on a refunded transaction.

But we’d bet the merchant never sees Interchange returned in either a refund or void.

And we’ll show you exactly how Stipe hoses their merchants with this knowledge.

If you’re technical enough you can look at Stripe’s own APIs and you’ll see that there is no such thing as a void or reversal, just refund: https://docs.stripe.com/api/refunds

Stripe, like many other developers, has ignored the very real and material differences between a void and refund in hopes nobody will question their sleight of hand.

If you’re 99% of Stripe’s users, though, your interaction with Stripe is through their dashboard UI.

So let’s turn there next.

This first screenshot shows a transaction that was “refunded” 2 minutes later.

That’s a reversal, bro.

Card payments don’t settle in seconds: they settle in days.

Interchange was never even taken from the acquirer.

Don’t matter, baby: Stripe kept that $16.01 like it was Stripe’s God-given right.

The next screenshot shows a transaction that was processed a minute before we took the screenshot, with the total and complete absence of a Void or Reversal button: just “Refund”.

And they’re not the only acquirer that keeps interchange, just the largest where this type of scam is clearly evident on their own interface. 

Is it in violation of network rules?

Meh.

Even if it were, it wouldn’t matter.

Because we’re giving you the 100%, iron clad guarantee that the duopolies will never audit nor enforce this because they treat Stripe with kid gloves.

We’ve submitted evidence of Stripe behavior that is in open defiance of network “rules” and there’s not once been a reprisal. 

We’re just waiting for a processor to come out with an additional fee for refund “handling” so they can keep more than 3% of the transaction’s value. 

Negotiate all you want on the rates a processor charges, but they’ll always be one step ahead of you.

Never a dull moment in payments.

Add comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Archives

Categories

Your Header Sidebar area is currently empty. Hurry up and add some widgets.