B2B, B2C: How Product Complexity Affects Reporting
Most Reporting Bugs Are Mapping Bugs
When a FINTRAC report gets rejected or comes back as a finding, the cause is rarely that someone forgot to file. The data was there, the deadline was met, and the report went in. The problem is that the right information was in the wrong party field or the data is missing.
This happens because of a mismatch nobody designs for up front. Your platform almost certainly models a transfer as two parties: a sender and a recipient, or a customer and a payee. FINTRAC models it as three roles, and asks a second question about each.
That gap is where party mapping lives, and it is the part of an integration that quietly takes the longest.
Three Roles, Not Two
For transfers, FINTRAC cares about three distinct roles:
- The sender — who actually conducted the transfer.
- On behalf of — the party the transfer was really for, if that is someone other than the sender.
- The beneficiary — who receives the funds.
These are not labels on the same person. They are the three axes FINTRAC uses to group transactions when applying the 24-hour rule: transfers are aggregated by sender, by the party they were made on behalf of, and by beneficiary, separately. A business that collapses "on behalf of" into "sender" because its own schema has no third-party concept is not simplifying. It is deleting one of the three aggregation axes, and under-reporting as a result.
Then comes the second question. Each of those three roles is either a person or an entity, and FINTRAC wants different identifying information depending on which. An individual means name, address, identifier type and number, and date of birth. An entity means the business name, address, and the details that establish what the business is and who stands behind it. Different fields, different validation, different records to keep.
Four Names, Eight Mappings
Three roles, each of which is one of two shapes, gives you two to the power of three.
Here is the part the shorthand hides. B2B and B2C describe only two of the three roles — the sender and the beneficiary. That gives four names: individual to individual, individual to entity, entity to individual, entity to entity.
But the party a transfer is made on behalf of can itself be an individual or an entity, and that doubles every one of those four. "B2C" is not one mapping. It is two, and they need different identifiers: an entity sending on behalf of an individual is not the same report as an entity sending on behalf of another entity.
So the four names your product team uses map onto eight filings. Those are not edge cases either — a sole proprietor sending to a numbered company, a payroll provider paying an individual contractor overseas, a marketplace paying out to a seller who is sometimes a person and sometimes a corporation depending on how they signed up are all ordinary, high-volume flows.
The row that catches teams out
Row 5 — the first of the two B2C rows, where an entity sends on behalf of an individual to an individual — is the classic remittance-agent shape. The business is the sender of record, but the reportable client is the person who walked in. Map the agent into both the sender and the on-behalf-of slots and the report is wrong in a way that passes every format validation and fails an examination.
Then You Add a Second Product
Eight is the number for one product line. Almost nobody has one.
Each product maps the three roles differently, because the commercial relationship is different:
| Product | Sender | On behalf of | Beneficiary |
|---|---|---|---|
| Retail remittance | Your customer | Usually the same | Named recipient abroad |
| Agent-assisted remittance | The agent entity | The walk-in customer | Named recipient abroad |
| Marketplace payouts | Your platform entity | The seller | The seller's bank or wallet |
| Payroll | The employer entity | The employer | Individual employees |
| FX settlement | Corporate client | Corporate client | Counterparty entity |
| Wallet top-up | The individual | The individual | The individual's own wallet |
Each row carries its own eight permutations, because the parties in it can still be persons or entities in different combinations. The real surface area is 8 × N, not 8. Add a product, and you have not added one mapping — you have added eight.
This is why party mapping tends to be fine at launch and painful at month nine. The first integration hardcodes the shape of the first product. The second product arrives, does not fit, and gets forced through the same path with a special case. By the fourth product the mapping logic is a pile of conditionals that nobody wants to touch, and the compliance team has lost the ability to answer a simple question: for this report, which party went into which field, and why?
Handling It Through the API
The fix is to stop inferring roles from the shape of your data and start declaring them.
The Quantoflow API takes each party on a transaction with its role and its type stated explicitly — sender, on-behalf-of or beneficiary, and person or entity — rather than guessing from which column the value arrived in. From there the platform:
- Applies the right field set. Declare a party as an entity and the API expects and validates business identifiers; declare a person and it expects individual ones. You do not maintain two parallel payload shapes.
- Validates before filing, not after. A missing or mismatched identifier surfaces as a field-level error against your submission, not as a FINTRAC rejection days later.
- Aggregates on all three axes. Because the roles are explicit, 24-hour aggregation runs by sender, by on-behalf-of party and by beneficiary independently, the way the regulation describes.
- Keeps the mapping auditable. Every filed report records which of your parties was mapped to which FINTRAC role, so the answer to "why is this business in the sender field" is in the record rather than in someone's memory of the integration.
- Lets you add a product without reopening the last one. A new product line is a new mapping configuration, not a new branch in shared code.
The practical effect is that the eight permutations stop being eight code paths. They become data, and the same integration handles all of them.
When It Is Genuinely Complicated
Some mappings are not a configuration question. They are a judgement call about who the reportable party actually is, and getting that wrong is a compliance problem rather than an engineering one:
- Nested intermediaries, where funds pass through two of your business lines before leaving the country.
- Pooled or omnibus accounts, where the entity on the account is not the party the funds belong to.
- Customers who are sometimes a person and sometimes an entity under the same relationship.
- Structures where third-party determination is unclear, and the answer changes which report you owe.
These are worth getting right before they are encoded into an integration and replicated across months of filings. If your mapping does not fit cleanly into the eight, that is a signal to work it through with someone rather than pick the closest-looking row.
Work it through with our team
We map party structures with customers directly, including the ones that do not fit a standard shape. Bring your product lines and we will work out what maps to sender, on-behalf-of and beneficiary for each, and how to encode it once.
Talk to the Quantoflow TeamThe Bottom Line
B2B and B2C are a useful shorthand and a misleading one. Between them they name four pairings, each of which is two filings once you account for who the transfer was on behalf of — and all eight apply per product line rather than per business. The teams that struggle are the ones that hardcode the first mapping and bolt on the rest; the teams that do not are the ones that treat the role and the party type as explicit, declared data from the first integration.
Get the mapping right once, in a form you can point an examiner at, and adding the fourth product stops being a compliance event.
One Mapping, Every Product
Quantoflow Report files FINTRAC reports from explicit party roles, so the same integration handles all eight permutations across every product line. Monitoring aggregates on all three axes, and Cases keeps the investigation attached when a transfer needs one.
Talk to the Quantoflow TeamCitations
- PCMLTFR s. 126-130: 24-hour rule and aggregation by conductor, third party and beneficiary https://laws-lois.justice.gc.ca/eng/regulations/SOR-2002-184/
- FINTRAC: Reporting electronic funds transfers to FINTRAC https://fintrac-canafe.canada.ca/guidance-directives/transaction-operation/eftr-doie/eftr-doie-eng
- FINTRAC: Third party determination requirements https://fintrac-canafe.canada.ca/guidance-directives/client-clientele/Guide11/11-eng
- FINTRAC: Reporting transactions to FINTRAC: The 24-hour rule https://fintrac-canafe.canada.ca/guidance-directives/transaction-operation/24hour/1-eng