← All essays

AUGUST 18, 2026

The cheapest payment rail on our P&L was the most expensive one in our funnel.

Why we added a payment method that cost more on every transaction, and what it taught me about the costs that never reach the payments line.

We shipped a payment method that made every transaction more expensive for us. I would make the same call again tomorrow.

At Transfez, most users paid the old way: bank transfer. In Indonesia that is not a tap. It is a small expedition. You leave the app, open your mobile banking app, copy a virtual account number across, confirm the amount, wait for the transfer to clear, and then come back to the app you started in to see whether anything happened.

For us, that rail cost almost nothing to process. On a per-transaction basis it was the cheapest way money could enter the system. If you looked at the payments line, it was the hero of the story.

So when we proposed adding Pay by Card, the objection was the obvious one, and it was not a stupid objection.

The objection was correct

Cards carry processing fees. Every transaction that moved from bank transfer to card would carry a thinner margin than the same transaction would have carried the day before. Why would a remittance company, in a category where margin is already the thing everyone fights over, volunteer to pay more to move exactly the same money?

I want to be fair to that argument, because it was made by people doing their jobs well. If you own the cost of payments, your job is to make that number smaller. A proposal that makes it bigger by design should get pushback. I have made versions of that argument myself, in other rooms, about other cost lines, and felt entirely responsible doing it.

The problem was not the reasoning. The problem was the column.

The cheap rail was only cheap in the column we happened to be looking at. It was cheap per completed transaction. It said nothing at all about the transactions that were never completed.

Every step was an exit

Walk back through that bank transfer flow and count the moments where a user is somewhere other than your product.

  • They leave your app to open their bank's app
  • They have to find, copy and paste a number they did not choose
  • They confirm a payment inside an interface you have no control over
  • They wait, with no feedback from you, for something to clear
  • They have to remember to come back

Each of those is an exit. Not a dramatic one. Nobody rage-quits on step three. They get a message. The banking app asks them to log in again. The copy-paste fails on the first try. Their stop arrives. And a meaningful share of people who fully intended to send money simply never came back to finish.

Here is what makes that cost so hard to fight: it does not show up anywhere on the payments line. The payments line only counts payments. A transfer that was started and abandoned costs you zero in processing fees, which, on the report that owns processing fees, looks like a success.

Nobody invoices you for the money you didn't move.

We were protecting cost per transaction, and paying for it in transactions that never happened. That second cost lives in the funnel, which is owned by a different team, read in a different meeting, and explained with a different story. Usually something about intent, or seasonality, or the quality of the traffic coming in.

What Pay by Card actually changed

Pay by Card collapsed the detour into one screen. The user stays inside the app, pays by card, and confirms. No context switch, no copied numbers, no waiting in somebody else's interface hoping it worked.

It is not a clever feature. Nobody gave a conference talk about it. It removed the part of the journey where we were asking the user to do our job for us, using a tool we did not control.

And it grew. The number I would put in front of a board is not the launch number. It is this one: in the second half of its first year, after the novelty had worn off, GTV through Pay by Card was still growing at 88% annualized.

Why the second half is the number I'd defend

Anything can spike in month two. Launches create their own weather.

When you ship a new payment option, a predictable set of things happens that have nothing to do with whether you removed friction:

  • Existing users try it once because it is new and visible
  • Whatever launch promo you ran pulls volume forward
  • The team pays unusual attention to it, so it gets placement and polish nothing else gets
  • The first cohort is self-selected for curiosity, which makes them look more engaged than the people who come after

All of that inflates the first few months. None of it lasts. If you report the launch curve as the result, you are reporting a moment of curiosity and calling it product-market fit for a feature.

Sustained growth after the launch bump is different evidence. By the second half of the year, the promo is gone, the novelty is gone, and the team's attention has moved on to the next thing. What is left is the behaviour of ordinary users choosing the path of least resistance, week after week. If that is still growing, you did not buy attention. You removed something that was in the way.

That is the test I now apply to most launches, not just payment methods. Ignore the first spike. Look at what the curve does once nobody is excited about it anymore.

Two businesses that look like one

The lesson I keep relearning, in different costumes, is that margin per transaction and margin per acquired user are two different businesses. Only one of them compounds.

Think about what it took to get a user to the payment step in the first place. You paid to acquire them. They installed the app, signed up, went through verification, set up a recipient, and entered an amount. Every one of those steps had a cost, and most of it was spent before they reached the screen where we asked them to leave.

When that user abandons at the bank transfer detour, the cheap rail has not saved anything. It has thrown away every dollar of acquisition and onboarding spent getting them there. The processing fee you avoided was the smallest number in the whole chain.

And the cost compounds in the other direction too. In remittance, the first completed transfer is where habit begins. A user who sends successfully once has a reason to come back next month. A user whose first attempt dissolved somewhere between two apps does not have a bad memory of you. They have no memory of you. You do not get a second chance to make a first transfer feel easy.

So the real comparison was never "card fee versus bank transfer fee." It was "card fee versus the full cost of every user who got to the last step and did not finish." Put that way, it stops being a close call.

Where else the cheap option is hiding

Payments is just where this happened to bite me. The same pattern shows up anywhere a cost is measured in one place and its consequences land somewhere else. It is worth asking, honestly, about any line item your team is proud of keeping low:

  • The cheapest verification vendor, if it approves people more slowly or rejects more of the ones you wanted
  • The cheapest support setup, if it pushes users out of the app to get an answer
  • The cheapest notification provider, if a meaningful share of messages arrive late or not at all
  • The most efficient channel on a cost-per-install basis, if those installs never reach a transaction

I am not saying every one of those is a mistake. Sometimes cheap is just cheap. The point is that the person who owns the cost line is almost never the person who sees the downstream effect, and the report each of them reads is built to be blind to the other.

That is not a people problem. It is a measurement problem that looks like a people problem. Two teams, each optimising honestly, each looking at a correct number, each unaware that the other's number is the price of their own.

The question I ask now

When someone defends a cost line, I no longer ask whether the number is right. It usually is. I ask where the cost went instead.

Because costs rarely disappear. They move. They move out of the column with an owner and a target into a column nobody reads, often the gap between "started" and "completed," where the only symptom is a funnel that is slightly worse than it should be and a story about why.

The cheapest option on your P&L is frequently the most expensive one in your funnel. You will not find that out from the P&L.

Before you defend a cost line, go check what it is costing you somewhere nobody is measuring.

Seeing this in your own numbers?

Tell me what you’re dealing with. A few questions about your business and where growth is stuck, so our first call starts on your problem, not this essay.

Tell me about your problem →

10 questions · About 4 minutes · Reply within two business days

Rather write? Email me directly.

Built with v0