Bloga dön
Ürün

Why we refund failed activations automatically

From today, an activation that expires without a message costs nothing. No ticket, no handling fee, no goodwill gesture. The mechanics and the reasoning.

Sofia Renard tarafından·Product·31 Mar 2020 tarihinde yayımlandı·5 dk okuma

As of this morning, an activation that reaches the end of its window without receiving a message is refunded in full, automatically, within a few seconds. You do not open a ticket. There is no handling fee, no partial credit and no discretion involved. This is the behaviour we are going to be known for, so it is worth writing down why.

The rule

An activation has twenty minutes. If at least one SMS arrives in that window, you were charged for the activation and that is that. If nothing arrives, the activation moves to expired and the full price returns to your balance. Same for a number we could not hand over at all, and same for a number the upstream took back mid-window.

The states a purchase can end in are pending, waiting, code_received, completed, cancelled, expired, refunded and banned. Everything from cancelled onward that did not deliver a message credits back.

The mechanics

lifecycle
purchase        -> hold placed on balance, ledger entry: debit, activation id
number issued   -> status WAITING, 20:00 countdown starts
SMS arrives     -> status CODE_RECEIVED, hold settles, debit is final
window closes   -> status EXPIRED, sweep credits the ledger, balance restored
late SMS        -> message shown anyway, no re-debit

The refund is not a background job that might run. Purchases place a hold and write a ledger entry; a sweep runs every sixty seconds over activations whose deadline has passed, settles or reverses each one, and is idempotent on the activation id, so running it twice on the same row does nothing the second time. Balances are derived from the ledger rather than stored as a mutable number, which means a refund cannot half-happen.

Why not a handling fee

The common alternative in this market is to keep 20–30 % of a failed activation and call it a handling cost. There is a real cost — we paid an upstream for a number that produced nothing — so the fee is not dishonest on its face. We rejected it anyway, for a reason that is about incentives rather than fairness.

A provider that earns money when delivery fails has no reason to work hard on delivery.

If failures are revenue, then a country with 60 % delivery is not a problem to be fixed; it is a margin. We would keep listing it, we would keep quoting a cheerful number next to it, and the incentive to remove bad routes from the catalogue would quietly disappear. Making failure cost us is the only version of this business where our interest and the customer's point the same way.

There is a smaller, more selfish reason too. In February, 41 % of our support tickets were refund requests for failed activations. Each one took a few minutes and ended in us agreeing. Paying a person to say yes over and over is a worse use of money than simply saying yes automatically.

The edge case we chose to eat

Occasionally a message lands after the window closed — forty seconds late, sometimes several minutes. The activation has already expired and the refund has already been credited. We show you the message anyway and we do not re-debit for it.

Charging again at that point would be defensible and it would be awful. The customer has already been told the purchase failed and been given their money back; taking it away again because a carrier was slow turns a good experience into a confusing one. It happens on about 1.2 % of expired activations, which we can afford.

What it costs

Roughly one in ten paid activations currently expires without a message, and that share is now a direct cost line rather than a rounding error. We expect it to push us to delist countries we would otherwise have left on the shelf, and it already has: two pairs came off the pricing page this week because the refund rate made them loss-making, which is precisely the mechanism working.

One thing this does not cover: rentals. A rental is a number assigned to you for a period, not an outcome we sold you, and it is not refunded because no message arrived. If you are unsure whether a country works for your service, buy one activation first — a failed one is free, which is rather the point.

Yazılar İngilizce olarak yayımlanır.