B2B, B2C: How Product Complexity Affects Reporting

FINTRACEFTRParty MappingB2BB2CThird PartyAPIIntegrationAMLComplianceCanada
Ryan Mark, Co-Founder
8 min read

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.

Four groups of two rows. C2C is individual to individual, C2B is individual to entity, B2C is entity to individual, and B2B is entity to entity. Each name covers two mappings, because the party the transfer is made on behalf of can itself be an individual or an entity, and each of the eight rows needs a different mix of individual and business identifiers.
Four groups of two rows. C2C is individual to individual, C2B is individual to entity, B2C is entity to individual, and B2B is entity to entity. Each name covers two mappings, because the party the transfer is made on behalf of can itself be an individual or an entity, and each of the eight rows needs a different mix of individual and business identifiers.

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:

ProductSenderOn behalf ofBeneficiary
Retail remittanceYour customerUsually the sameNamed recipient abroad
Agent-assisted remittanceThe agent entityThe walk-in customerNamed recipient abroad
Marketplace payoutsYour platform entityThe sellerThe seller's bank or wallet
PayrollThe employer entityThe employerIndividual employees
FX settlementCorporate clientCorporate clientCounterparty entity
Wallet top-upThe individualThe individualThe 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 Team

The 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 Team

Citations

  1. 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/
  2. FINTRAC: Reporting electronic funds transfers to FINTRAC https://fintrac-canafe.canada.ca/guidance-directives/transaction-operation/eftr-doie/eftr-doie-eng
  3. FINTRAC: Third party determination requirements https://fintrac-canafe.canada.ca/guidance-directives/client-clientele/Guide11/11-eng
  4. FINTRAC: Reporting transactions to FINTRAC: The 24-hour rule https://fintrac-canafe.canada.ca/guidance-directives/transaction-operation/24hour/1-eng

Related Posts

SAR vs. STR: What Changes When You File in Both Jurisdictions
•Regulatory Updates
Article  |  9 min

SAR vs. STR: What Changes When You File in Both Jurisdictions

FINTRAC Exchange Rates: Using Bank of Canada Rates for the $10,000 Threshold
•Regulatory Updates
Article  |  8 min

FINTRAC Exchange Rates: Using Bank of Canada Rates for the $10,000 Threshold

The FINTRAC 24-Hour Rule: Static Windows vs. Running Clocks
•Regulatory Updates
Article  |  8 min

The FINTRAC 24-Hour Rule: Static Windows vs. Running Clocks