25 min

The remittance cost stack

A remittance pays fixed fees, per-hop fees and an FX spread all at once, and because the fixed parts do not shrink with the payment, small payments pay brutally more in percentage terms.

Where you are. Two lessons have priced the currency toll: lesson 7 found the spread hiding inside the exchange rate, and lesson 8 gave it a unit, the basis point, and showed that toll scaling with the notional. Behind them stands lesson 6’s chain simulator, where every correspondent hop charged a fee that did not care what the payment was worth. This lesson stacks all of it into a single bill - one flat fee, the per-hop fees, the FX margin - and points that bill at the payments least able to pay it: the small, monthly, human-sized ones.

The queue on Friday

It is the last Friday of the month, and in a fluorescent-lit shop between a takeaway and a phone-repair stall, a queue is forming. Everyone in it is about to make the same trade. A cleaner near the front is sending two hundred dollars’ worth home for her mother’s rent. The board on the wall shows a rate that is not the rate on the news. The counter charges a fee that does not care how little she sends. And somewhere behind the counter, if her money rides the rails you built in lesson 6, two correspondent banks will each take their own cut before it lands. She will do this again next month, and the month after, because rent is monthly. Scale her up by hundreds of millions of senders and you get one of the strangest facts in finance: the most expensive payments in the world are sent by the people with the least money, in the smallest amounts, most often.

Her payment has a name: a remittance, money sent home across a border by someone working abroad. Module 2 showed netting making everyday domestic payments almost free. The everyday cross-border payment is the opposite pole: the priciest traffic on the map.

The idea in one paragraph

The remittance cost stack is every toll this module has priced, charged together on one payment: a flat fee that ignores the amount, a fee per correspondent hop that also ignores the amount, and lesson 7’s FX margin, measured in lesson 8’s basis points, which scales with it. As a function: cost equals flat plus hops plus amount times margin. Divide by the amount to get the percentage the sender actually experiences and the shape appears - the margin is a floor the cost never drops below, while the fixed parts form a curve that explodes as the payment shrinks. A 10,000 dollar transfer barely notices 25 dollars of fixed load; a 200 dollar one surrenders an eighth of itself before the margin is even counted. That is why the fix is structural rather than promotional: a provider that deletes hops and thins its margin beats one that discounts a fee, at every size.

Three tolls, one bill

Write the stack down as the function the exercise will make you implement:

cost(a)=F+H+a×m10000\text{cost}(a) = F + H + a \times \frac{m}{10\,000}

In words: a remittance of amount $a$ pays a flat fee $F$ once, the sum of the hop fees $H$ once, and $m$ basis points of itself as FX margin. Two of the three terms are blind to the amount; only the third scales. Divide through by $a$ and the sender’s percentage is $(F + H)/a + m/10,000$: a fixed cost spread over a shrinking payment, sitting on top of a constant margin. As $a$ grows, the first term vanishes into the denominator and the bill settles onto the margin floor. As $a$ shrinks, the first term is a hyperbola, and small payments live on the steep part of it.

Provider style moves the whole stack

The exercise prices two stylised providers on the same corridor, and their numbers are teaching numbers - chosen to make the shape visible, not measured from any real menu. The bank stack is lesson 6’s chain sold retail: a 15 dollar wire fee, a 5 dollar cut at each of two correspondents, and a 250 basis point margin at the FX desk. The digital stack has a 2 dollar platform fee, a 90 basis point margin, and no hop fees at all.

The missing hops are not generosity; they are lesson 5, run on purpose. A digital remittance provider holds pre-funded pools on both ends of the corridor. Your 200 dollars never crosses the border: you pay the provider domestically on your country’s rails, and it pays your family domestically from its local pool. The correspondent chain is still there, but the provider crosses it rarely and in bulk, rebalancing its pools, so the chain’s fixed tolls are amortised over thousands of payments instead of charged on each one. The float itself is not free - money parked in a foreign pool is lesson 5’s idle trillions in miniature, and hedging it costs real basis points - which is why the margin is 90 and not zero. The saving is structural, not a discount, and the exercise asserts exactly that: the digital stack wins at both sizes, not just one.

image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ bank, 200 digital, 200 bank, 10k digital, 10k 0 50 100 150 200 250 cost (dollar-equivalent, stylised stacks) 15.0% 1.9% 2.8% 0.9% flat fees FX margin
the same remittance, two providers, two sizes

The figure stacks the two bills at both sizes: blue is everything blind to the amount, gold is the margin, and the percentage above each bar is what the sender feels. Read it left to right and the lesson is one glance: the bank’s 200 dollar bar is small money but a huge percentage; the same stack at 10,000 is big money and a modest percentage; and the digital bars sit low at both sizes because the whole stack moved, not one line of it.

The world’s bill, with a date on it

The stylised stacks predict a shape. The measured world confirms it, and because these numbers move every quarter, they arrive here with a date and a source rather than as timeless truth.

Hold the stylised stacks up against the measured averages and the fit is close: the bank stack at 200 dollars cost 15.00% and real banks average 9.50%; the digital stack cost 1.90% and real digital providers average 3.65%. The teaching numbers exaggerate the gap to make the mechanics legible, but the ordering, the split by style and the punishment of small payments are all in the measured data.

Check yourself

1. The bank stack charges 30 dollars on a 200 dollar payment and 275 on a 10,000 dollar one. Decompose both bills: which parts moved, and what does that do to the percentage?

The flat 15 and the 10 of hop fees appear unchanged in both bills; only the margin scaled, 5 dollars to 250. So 25 of the small payment’s 30 dollars of cost are blind to the amount - 12.5 percentage points of its 15.00% - while the same 25 dollars is 0.25% of the large payment. The percentage is fixed-costs-over-amount plus the margin: a hyperbola sitting on a floor. Small payments live on the hyperbola’s steep side; large ones settle onto the margin floor.

2. The digital stack lists no hop fees. Where did the correspondent chain go, and who pays for it now?

Nowhere - the provider just stopped crossing it per payment. It holds pre-funded pools on both ends, lesson 5’s float run deliberately: the sender pays it domestically, it pays the recipient domestically, and the chain is crossed occasionally in bulk to rebalance the pools. The chain’s tolls are amortised over thousands of payments, so each sender pays a sliver instead of the full fare, and the cost of parking and hedging the float lives inside the 2 dollar fee and the 90 basis points. That is why the exercise calls the saving structural: it holds at every payment size, unlike a discount.

3. The World Bank measures the world’s average at 200 dollars. Why is that the honest size, and what would measuring at 10,000 do instead?

Because 200 dollars is what this traffic actually looks like: rent, school fees, a month’s support, sent again next month. At that size the fixed parts of every stack dominate, so the measurement captures what senders truly pay. Measured at 10,000, every provider would look cheap - the identical bank stack falls from 15.00% to 2.75% with no change in behaviour, purely because the flat parts vanish into the denominator. Choosing the small size is not pessimism; it is measuring where the cost actually bites.

4. A comparison site shows a corridor’s cheapest option near 3%, yet a friend’s family received nearly 7% less than a mid-market conversion of what he sent. Name two ways both numbers can be true.

First, cheapest is one provider, one payout method, one moment - his provider, or the cash-pickup point his family can actually reach, may sit far above the corridor’s best price, and prices drift between the site’s snapshot and his transfer. Second, an advertised price can simply omit the margin: a zero-fee headline collects through the exchange rate, and only pricing the delivered amount against the mid-market rate - lesson 7’s discipline - counts the whole stack. The corridor average hides the provider, and the advertisement hides the spread.

Do this

Fifteen minutes, from module-03-across-borders. Open code/remittance_stack.py. The two stylised provider stacks from this lesson sit at the top of the file; your work is stack_cost, the three-term function from this lesson: the flat fee, plus the summed hop fees, plus the margin as amount * stack["fx_margin_bps"] / 10_000 - lesson 8’s unit doing its daily work. The harness then prices both stacks at both sizes and asserts the lesson back at you: the four exact bills; the percentage falling with size on both stacks; the bank’s 200 dollar payment paying over five times the percentage of its 10,000 dollar twin; and the digital stack winning at both sizes.

python3 code/remittance_stack.py

Green is this scoreboard, ending with the final line verbatim:

provider    amount      cost   cost %
bank           200     30.00   15.00%
bank         10000    275.00    2.75%
digital        200      3.80    1.90%
digital      10000     92.00    0.92%
the fixed parts of the stack do not shrink with the payment: the same bank stack costs 15.00% at 200 and 2.75% at 10,000 - small remittances pay brutally more

If the bank’s 200 dollar bill prints 525.00 instead of 30.00, you divided the basis points by 100: a basis point is a hundredth of a percent, so the divisor is 10,000. If the digital asserts fire while the bank’s pass, check that an empty hop list sums to zero rather than crashing - sum([]) is 0, and the digital provider’s whole business model lives in that empty list. The completed version is solutions/remittance_stack.py; compare after you are green.

What you can now do. You can take any remittance quote apart into its three tolls - flat, hops, margin - and say which parts will still be there when the payment shrinks. You can explain why provider style dominates price: not discounts, but structure, pre-funded pools amortising the chain that banks charge per payment. And you can quote the world’s bill the only honest way, with a denominator, a date and a source: 6.36% on 200 dollars in the third quarter of 2025, by the World Bank’s measure, against a 3% target. The module project will run this same decomposition on the simulated New York to Tokyo corridor. Before that, the module leaves cost for danger. Every toll so far was charged on a payment that arrived. Lesson 10 asks what a currency trade loses when one half of it does not - when you deliver your leg and the other side fails before delivering theirs, and the loss is not a toll but the whole amount.

What you can now do

You can decompose a remittance's cost, compare provider styles, and date the world's averages honestly.