Growing a sub-agent network rests on a simple assumption: more points of sale means more revenue, and more revenue means more profit. The first half usually turns out to be true. The second half usually does not. What you arrive at instead is a picture where turnover climbs while collections slow down, where no report tells you how much margin is actually left on each sub-agent, and where month-end reconciliation drags on for a few extra days every single time. At that point most agencies diagnose the problem as "a reporting gap". It is not. The problem is that three independent decisions are being treated as one: what price you give the sub-agent, what commission you pay them and on what base, and how much open exposure you allow them to carry.
Every link in the chain applies its percentage not to the raw cost but to the output of the link before it. That is why every sub-agent agreement built on simple addition ends up more expensive than the arithmetic promised.
These three decisions belong to different functions, should be made by different people, and should be reviewed on different cycles. The markup rule is a commercial decision and changes within weeks as competition moves. The commission base is a contractual decision, defined once a year together with finance. The credit limit is a risk decision, updated monthly according to how the sub-agent actually pays. When all three are compressed into a single "partner agreement" document, changing one quietly breaks the other two.
The sections below separate the three decisions and attach a concrete calculation, threshold or control rule to each. Most of what follows is independent of the software you run; an agency managing sub-agents in a spreadsheet faces exactly the same arithmetic. For scale: intermediated selling is not a niche. IATA's Billing and Settlement Plan — the clearing mechanism through which accredited agents settle airline sales — covers 207+ countries and territories, more than 59,000 accredited travel businesses and over 400 airlines. Every one of those businesses sits somewhere on a chain, and the chain is where margin is either made or lost.
1. Same product, different buyer, different price: the breaking point of B2B pricing
On a consumer-facing site there is one price. It is calculated as the search result is built, printed to the screen, and carried into the basket at that figure. In B2B this model does not work, because two sub-agents querying the same flight at the same moment must see different prices.
The operational consequence is sharper than most teams realise: if you freeze the price at search time, you cannot offer sub-agent-specific pricing. The correct architecture is to store the raw net fare coming from the supplier exactly as received, and to apply the markup rule and the currency conversion separately for each reader. In our own B2B platform, the search session holds the raw supplier fare; the rule chain and the currency conversion run according to the agency reading the result.
The practical test of this distinction is simple: query the same flight from two different sub-agent accounts within the same minute. If you do not see two different figures, then the system is fixing the price at search time — no matter what sub-agent-based pricing it was sold to you as — and you will have to manage every future partner agreement by hand.
Decision rule
When you open a new module or a new supplier, ask one question: who is this source's price being calculated for? If the answer is "for the account running the search", you are fine. If the answer is "for the system", that source will not support sub-agent differentiation, and you need to know that before you sign the agreement.
2. The longer the chain, the more margin compounds away
Markup rules apply layer by layer: the operator rule, then the GSA rule, then the agency rule, then the sub-agent rule. Each layer applies its percentage not to the raw cost but to the output of the previous layer. That is why the sentence "let's give everyone 5%, that's 20% in total" is wrong.
| Rate per layer | 2 layers | 3 layers | 4 layers |
|---|---|---|---|
| 3% | +6.09% | +9.27% | +12.55% |
| 5% | +10.25% | +15.76% | +21.55% |
| 8% | +16.64% | +25.97% | +36.05% |
| 10% | +21.00% | +33.10% | +46.41% |
The right way to read this table is to compare columns, not rows. In a chain running at 8%, removing one layer makes the final price 10.08 points cheaper (36.05% → 25.97%). In the same chain, cutting the rate from 8% to 5% wins you 14.50 points. So both levers work — but removing a layer is usually easier: a rate cut requires a negotiation with the partner, while removing a layer is a structural decision you can make on your own.
Applicable rule
Cap the chain at three layers. If you have to add a fourth (a regional GSA, for instance), keep that layer's rate independent of the others and lower; otherwise your final price will never get under the direct sellers you compete with. Measure the total effect of the chain at least twice a year against real sales data: on your twenty best-selling products, express the gap between the raw net fare and the price the sub-agent sees as a percentage, and review every line above 25%.
3. What the rule binds to: eight criteria and how to choose
In a markup rule engine, leaving a rule "general" is the easiest option and the most expensive one; it applies the same percentage to every sale, leaves no profit on low-priced products and prices you out of the market on high-priced ones. In our own engine, a rule can be bound to eight different criteria.

Which criterion a rule binds to maps one-to-one onto the tab it is defined in. Defining a rule on the wrong tab applies it to a far wider set of sales than you expected.
| Criterion | When to use it |
|---|---|
| General | Only as a base rule; never on its own |
| Supplier | When one source's cost is structurally different from the others |
| Supplier + airline | When commission differs by airline within the same source |
| Supplier credential | When you hold two contracts with the same supplier (e.g. different commission rates) |
| Supplier credential + airline | The narrowest scope; for managing exceptions |
| All countries | To apply a different rate to international sales in one move |
| Selected countries | When competitive pressure exists in a specific origin/destination market |
| Price range | To price cheap and expensive tickets with different logic |
The selection guide reduces to one sentence: bind the rule to the narrowest criterion where the difference genuinely originates. If you have no airline-level commission difference, do not use the airline criterion — every rule is a debt that will later need explaining and maintaining. In practice, a healthy setup has no more than twice as many rules as sub-agents; if you are above that, you are managing exceptions as rules.
4. Percentage or flat amount: calculate the threshold
A percentage rule is too thin on cheap products and too heavy on expensive ones. A flat amount does the exact opposite. The right answer is to use both and calculate the crossover threshold:
Threshold price = flat amount ÷ percentage rate
A EUR 8 flat amount and a 3% rate cross at 8 ÷ 0.03 = EUR 266.67. So a rule of "flat EUR 8 from 0 to 267, 3% above that" works without creating a break in the price curve. If you define bands without calculating the threshold, the price curve jumps — and the sub-agent will notice sooner or later.
| Ticket price | Flat EUR 8 | 3% | Applied |
|---|---|---|---|
| EUR 100 | 8.00 (8.0%) | 3.00 | 8.00 |
| EUR 267 | 8.00 (3.0%) | 8.01 | 8.00 |
| EUR 600 | 8.00 (1.3%) | 18.00 | 18.00 |
In a flat-amount rule the currency is mandatory, and that is a risk decision. If you define the flat amount in the supplier's currency, the FX risk passes to the sub-agent; if you define it in your own currency, the risk stays with you. The rule is this: define the flat amount in whichever currency your sub-agent settles in. Otherwise currency movement eats your margin directly, and you only see it at month-end.
5. The price trail: seeing which rule added how much
When a sub-agent tells you your price is too high, you can have one of two things in hand: an explanation, or a record. The price trail is the record that holds, line by line, how much each rule added at each step of the chain. In our engine, every applied step appears as a trail entry on the search result, so front-line staff can defend the figure too.
Price objection procedure — four steps
- Verify the raw net fare. The objection is usually not about the markup at all but about the fare coming from the supplier. Re-run the same query on the raw fare.
- Read the trail and split it layer by layer. Identify which layer the gap comes from. Usually a single layer dominates.
- Check that layer's rule together with its criterion. The most common error: a rule written for a narrow exception was saved against the "general" criterion.
- Write the decision down. If you changed the rule, record the reason and the date; if you did not, record the explanation you gave the sub-agent.
The trail the sub-agent sees and the trail you see should not be the same. A sub-agent can be shown what their own layer added; the breakdown of the upstream layers is not shown. If you do not define this in advance, the first objection will force you either to disclose too much or to disclose nothing at all — and lose trust either way.
6. Sharing documents without exposing your margin
Sub-agents forward the document for the ticket they sold to their own customer. If your margin is visible on that document, your network will unravel within a few months. The fix is to produce the document in two modes: in the agency view the service fee is a separate line, in the customer view it is embedded in the base price. This is not a cosmetic preference but a contractual requirement; write into your partner agreement that "the intermediary margin shall not be itemised on documents forwarded to the end customer".
There is a trap to watch here. In many systems the "service" line on the document is not an independent item but a view derived from the markup amount — that is exactly the case on our own air ticket document, where a fixed service fee cannot be defined separately from the markup. The practical consequence: when you zero out the markup, the service line goes to zero too. If you want to collect a fixed service fee (on zero-commission tickets, for example), ask about this specifically when choosing software; "there is a service line on the document" is not a sufficient answer. Ask whether it can be defined independently of the markup.
7. The commission base: gross sale, or sale minus cost?
This is the single most expensive mistake in this article, and it is almost never discussed. Commission is agreed as "10%", but what the 10% is calculated on never gets written down.
Same sale, same rate, two different bases. The gap is 6.7x — and both can be summed into a single "commission" column.
| Base A: gross sale | Base B: sale − cost | |
|---|---|---|
| Calculation | 1,000 × 10% | 150 × 10% |
| Commission | 100 | 15 |
| If cost rises | unchanged | falls |
| Who carries the risk | you | the sub-agent |
Having both definitions live side by side inside the same organisation is more common than people assume. That is exactly what we measured in our own tour module: on a sale that goes through the panel, the commission rate is applied to the gross sale, while on a sale keyed in manually by an operator the commission is calculated as the difference between sale and supplier cost. When the two definitions are summed in the same report, the resulting number means nothing — it gives neither the amount payable to the sub-agent nor the organisation's true commission expense.
A definition template for the contract
"Commission shall be calculated on [the gross sale amount / the sale amount less the supplier net cost]. The supplier net cost is the raw supplier price recorded in the system at the moment of sale; refunds, penalties and exchange-rate differences arising afterwards shall not change the commission base."
The second sentence matters more than the first. Even with the base defined, if the question "does anything that happens later change the base?" goes unanswered, every refund and every currency movement spawns a new reconciliation argument.
Watch for hard-coded rates
Some payout rates are not driven by the contract at all but hard-wired into the system. In our own transfer module the driver payout commission is a fixed 20% and cannot be adjusted per renter, driver or vehicle contract. That is not a defect in itself — a fixed rate can be a deliberate choice because it simplifies administration. The defect is signing a contract with a different rate without knowing. When you evaluate software, ask item by item whether each payout line is configurable or fixed.
8. Account balance, credit limit, available balance: three separate numbers
These three are constantly confused with one another. The balance is where the sub-agent stands today, the limit is the ceiling of open exposure you have granted them, and the available balance is the number that actually stops a sale.
When the limit is exhausted, the sale does not have to stop entirely. The credit-account route closes, the card route stays open — so risk is managed without losing the sale.
The limit-setting formula
Setting limits "by feel" is the most common mistake. Use a measurable base:
Limit = (average monthly sales ÷ 30) × (payment terms in days + average delay in days) × risk coefficient
A worked example: a sub-agent sells an average of EUR 300,000 a month, so EUR 10,000 a day. Terms are 7 days, and over the last six months they have paid on average 4 days late. The exposure window is 11 days, and the raw exposure is EUR 110,000.
| Sub-agent profile | Risk coefficient | Limit |
|---|---|---|
| New partner (0–6 months) | 0.5 | EUR 55,000 |
| Consistent payer (12+ months) | 1.0 | EUR 110,000 |
| Secured / guaranteed | 1.3 | EUR 143,000 |
The value of the formula is not that it produces a precise number; it is that it ties the limit to the sub-agent's payment behaviour. The limit must not rise automatically as the average delay grows; on the contrary, when the delay crosses your threshold, cut the coefficient. As a second internal rule, I would add a concentration cap: no single sub-agent's limit should exceed a set percentage of your total open receivables. Set that percentage according to your own capital structure — but do set it. The failure of your largest partner must not be the thing that takes the business down.
The audit trail on manual balance movements
Account movements arising from sales should be immutable; only manual entries should be reversible, and only when flagged as such. Every manual movement should be recorded with who, when and from which IP — on our own platform, balance top-ups and deductions are stored with those three fields. It is hard to appreciate why this matters until you have lived through it once: a manual balance entry is the single highest-risk transaction in a sub-agent network, and in setups that leave no trail the source of a month-end discrepancy is never found.
9. The BSP calendar changed in 2026: your sub-agent terms are no longer independent
IATA's Passenger Agency Conference amended Resolution 812 in November 2025. In markets operating weekly remittance, amounts collected on behalf of airlines must be transferred within five business days, and no later than seven calendar days, after the sales/billing period closes. The change took effect in June 2026, and with the deletion of Section 6.5.3.7(b), remittance periods became standardised across all markets.
Cash float varies with where in the period the sale falls. When sub-agent terms are fixed, the open position is largest on tickets sold towards the end of the period.
IATA's stated rationale is that a fixed, predictable weekly calendar reduces the number of sales days at risk, which in turn lowers the level of financial security accredited agents have to provide. The industry response was not one-sided: UFTAA publicly opposed the standardisation, arguing that shorter, more rigid remittance periods will increase agents' cost of liquidity.
From an agency's point of view, the real issue is not who is right but that the calendar is now fixed. That has a direct consequence for your sub-agent network:
| Day the ticket is sold | Remittance deadline | Cash float |
|---|---|---|
| Day 1 of the period | Day 14 | 13 days |
| Day 4 of the period | Day 14 | 10 days |
| Day 7 of the period | Day 14 | 7 days |
Decision rule: the payment terms you grant your sub-agent cannot be longer than the average cash float of your own remittance obligation. In the table above the average float is 10 days. If you grant a sub-agent 15-day terms, then on a ticket sold on the last day of the period you are funding the money out of your own capital for 8 days. At small volumes this is invisible; as turnover grows it turns into a permanent working-capital requirement — and it is the most frequent cause of cash squeeze in growing sub-agent networks.
Your accreditation model is part of the same equation. According to Antravia's explanation, IATA's GoLite model requires no financial security bond but does not let the agency float cash; tickets are paid instantly via the IATA EasyPay wallet or a corporate card. The GoStandard model grants a credit line known as "Remittance Holding Capacity" — issue first, pay later — but requires passing a financial assessment. The same source is explicit in its warning: if that cash is used to fund operating expenses before remittance, the agency risks defaulting when BSP calls the money in.
10. Permissions by module: open a new sub-agent in stages
Handing a new sub-agent every module, the full limit and cancellation rights on day one is the most common operational error in the network. If module permissions can be switched on and off per agency, tie them to a staged calendar.
| Stage | Modules | Limit | Cancellation rights |
|---|---|---|---|
| Day 0 | The single module they will sell most | 0 (prepaid) | Off |
| ~Day 30 | + second module | 50% of the formula | Off |
| ~Day 90 | Full range | 100% of the formula | Per user, limited |
Delegate cancellation rights at the user level, not the module level. There is a serious difference between a sub-agent being able to cancel and every single user at that sub-agent being able to cancel; the second opens penalty-bearing transactions to untrained staff. Also verify that when a sub-agent is deactivated, search and booking access is cut off down the chain — as long as a deactivated partner's session stays alive, the risk continues.
11. The month-end reconciliation routine: seven checks
Run this list once a month, on the same day, in the same order. It should take no longer than thirty minutes; if it does, something in the previous item is broken.
- Commission base consistency. Is commission on panel sales and on manually keyed sales calculated on the same base? If not, report the two figures in separate columns — do not add them.
- Sub-agents who exceeded their limit. How many times during the month, and on whose approval? If the same sub-agent appears more than twice, the limit is wrong, not the rule.
- Manual balance movements. Who, when, from which IP, on what grounds? Not one line should remain without a reason.
- Price reconciliation differences. Read the gap between the ticketed amount and the amount collected, broken down by currency; escalate anything above your threshold to an operator decision.
- Use of cancellation rights. How many cancellations, by which user, with how much penalty? If total penalties approach a meaningful share of your commission income, narrow the distribution of rights.
- Currency conversion dates. On flat-amount rules, which rate was applied on which date? Without a defined FX date policy, this line starts an argument every month.
- Remittance calendar alignment. Is your average collection day from sub-agents longer than the cash float of your own remittance obligation? If it is, write down the gap and the cost of financing it.
12. What to ask, line by line, when choosing software
The items below are capabilities that are assumed to exist in a sub-agent management system and frequently do not. They include gaps we have measured in our own platform; the aim is not to defend a product but to hand you the right question. In a demo, do not ask "do you have it?" — ask "can you show me?"
- Does the commission summary cover every module? In our own system the commission summary is currently calculated from air ticket sales only; the commission breakdown for other modules comes back empty. If you run a multi-module network, do not accept a cross-module commission statement without seeing it on demo data.
- Does the markup chain work in every module? In our group booking module the sale price of a group quote is entered manually, and the multi-layer markup chain is not applied to that module. Likewise, in car rental search an agency-level profit rule can be defined but does not flow through to the search results. Verify module by module.
- Is there a credit-account link in every module? In our group module, collection lines are recorded manually inside the module and no movement is written automatically to the agency's credit account. A module without credit-account integration falls outside your month-end reconciliation.
- Can a service fee be defined independently of the markup? (Section 6.)
- Are payout rates configurable or fixed? (Section 7.)
- Are manual balance movements stored with a who/when/which-IP trail, and are sales movements immutable?
Five things you can do tomorrow morning
- Count your chain. How many layers sit between the raw net fare and the price the sub-agent sees? If it is more than four, decide today which one you can remove.
- Calculate the total markup percentage on your twenty best-selling products. Flag everything above 25%; those are the lines where you are losing on price.
- Write your commission base down in one sentence and send it to finance with the question "is it the same in our report?". If the answer is slow to arrive, the answer is already "no".
- Run the limit formula for three of your sub-agents. Look at the gap between the current limit and what the formula gives; fix the largest deviation this month.
- Put your remittance calendar side by side with your sub-agent payment terms. If the terms are longer, calculate the number of days in between and what those days cost you.
Frequently Asked Questions
Should I give sub-agents a percentage markup or a flat amount?
Use both and calculate the crossover threshold. The threshold price is the flat amount divided by the percentage rate; EUR 8 flat and 3%, for example, meet at EUR 266.67. Apply the flat amount below that threshold and the percentage above it. That way you are not left without profit on cheap products and not priced out of the market on expensive ones.
How many layers should a markup chain have?
Aim for three and treat four as the limit. Because each layer applies its percentage to the previous layer's output, the effect is compound: at 8% per layer, four layers produce a 36.05% total difference, not 32%. In the same chain, removing one layer makes the final price 10.08 points cheaper.
Should commission be calculated on gross sale or on profit?
Writing down which one you chose matters as much as the choice itself. On a sale of 1,000 units with 850 units of cost, a 10% commission comes to 100 units on a gross-sale base and 15 units on a sale-minus-cost base — a 6.7x difference. Put both the base and the sentence "refunds, penalties and FX differences arising afterwards do not change the base" into the contract.
How do I set a sub-agent's credit limit?
Multiply their average daily sales by the exposure window and by a risk coefficient: (monthly sales ÷ 30) × (payment terms + average delay) × coefficient. Keep the coefficient around 0.5 for a new partner and raise it to 1.0 for a consistent payer. As the delay grows, cut the coefficient — not the limit.
Should sales stop completely when the limit is exhausted?
No. The correct behaviour is to close the credit-account route and leave the card route open, so risk is managed without losing the sale. If limit breaches repeat frequently, the problem is the limit level, not the rule — if the same sub-agent appears more than twice in month-end reconciliation, recalculate their limit.
How did the BSP remittance calendar change in 2026?
IATA's Passenger Agency Conference amended Resolution 812 in November 2025; in markets operating weekly remittance, collected amounts are transferred within five business days and no later than seven calendar days after the sales period closes. The change took effect in June 2026. IATA's position is that a fixed calendar reduces the number of sales days at risk and therefore lowers the level of financial security required; UFTAA opposed it on the grounds of liquidity cost.
How do I share a document with my sub-agent without exposing my margin?
Produce the document in two modes: a separate service-fee line in the agency view, embedded in the base price in the customer view. Add a clause to the partner agreement stating that the intermediary margin is not itemised on documents forwarded to the end customer. When selecting a system, ask whether the service line is derived from the markup — if it is, zeroing the markup zeroes the service line too.
If I hold two contracts with the same supplier, can I offer different prices?
Yes, and the supplier credential criterion is what you use. By defining the rule at credential level rather than supplier level, you can reflect the different commission rates of two contracts on the same source correctly in the price. If there is also airline-level variation, go down to the credential + airline criterion.
Sources
- IATA — Recent changes to BSP remittance rules (14 January 2026): iata.org
- IATA — Passenger Agency Conference Resolutions Manual, Resolution 812: iata.org
- IATA — Billing and Settlement Plan (BSP) coverage figures: iata.org
- Open Jaw — IATA Move Could Force Earlier BSP Payments from Agents (7 January 2026): openjaw.com
- Voyager's World — UFTAA Strongly Opposes IATA's Move to Globally Standardise BSP Remittance Periods (12 January 2026): voyagersworld.in
- Antravia Advisory — IATA, BSP & ARC Explained: Airline Risk, Cash Flow and Accreditation: antravia.com