Skip to content
Distribution

Lead distribution that ends with the invoice

Who gets this one, at what price, and what does the month add up to per partner. That is the half that usually falls back to a spreadsheet. Rehearse the routing before anything leaves, deliver it, take it back when a buyer is entitled to, and let the month close itself.

  • Rehearse a routing decision before a single lead moves
  • Four kinds of cap, time windows, duplicate checks, three strategies
  • ZUGFeRD and XRechnung out of the box, four tax cases
  • Your buyers get their own portal, so returns stop arriving by mail
Distribution
WaterfallThe first matching partner in order gets the record. The order decides.change
1East GermanyNordkontor Vertrieb GmbH2 conditionsDay 25Week ∞Month ∞price of the distribution
2West and SouthRheinwerk Süd GmbH8 conditionsDay 40Week 180Month ∞own price
3BeneluxVialux Solar B.V.3 conditionsDay ∞Week ∞Month 600price of the distribution
4AustriaAlpsol Handels GmbH4 conditionsDay 15Week ∞Month ∞own price
5Large roofs onlyCetus Partner GmbH1 conditionDay ∞Week 60Month ∞own price
6OverflowHalberg Energie AGno conditionsDay ∞Week ∞Month ∞price of the distributionpaused
Add partner

They then take part in this distribution and get a first rule without conditions. Where deliveries go is set on their participation.

The tools were never the problem

Getting a qualified record out of the CRM and into the routing tool meant the field names had to match on both sides. Keeping them matched was a manual job nobody owned, and you found out it had drifted when a partner received a lead with an empty postcode.

We ran a lead generation business on six of them. This is the part that cost us the most and showed up on no invoice.

You pay per seam
Every tool in the chain has its own subscription, and the one feature you actually needed is usually one price tier up.
A field is not one change
Add it in one place and it has to be added in the others. Miss one and nothing fails loudly: it fails the next time somebody filters on it.
Someone else's release is your outage
An API changes, a mapping stops matching, a webhook starts returning something new. You hear about it from the person who was waiting.
What it does

Forty partners, one month, one run

A qualified record goes to the partner your rules pick, at the price that holds for them. It comes back if they are entitled to and the deadline has not passed. At the end of the period one document per partner comes out of the same rows, with a credit note for everything returned. No export, no second spreadsheet, no recalculation.

  • The price sits on the contract, not the product. A fixed amount per record, or a rate times a number on it.
  • A return is a process, not an argument. A deadline, a reason from your list, a credit note on the next document.
  • Four tax cases. Domestic, reverse charge inside the EU, export and exempt.
  • Partners ask themselves. Their leads, their returns and their invoices, under your brand.
Billing
September, one document per partner
DocumentPartnerPeriodStateAmount
2026-0184Nordkontor Vertrieb GmbH52 × 40 €paid2.080,00 €
2026-0185Rheinwerk Süd GmbH31 × 120 €open3.720,00 €
2026-0186Vialux Solar B.V.44 × 95 €overdue4.180,00 €
previewAlpsol Handels GmbH61 × 250 €preview15.250,00 €

A preview still changes. An invoice carries a number and does not.

Rheinwerk Süd GmbH
one rule, four parts
ConditionsPostcode starts with 5Roof area ≥ 100 m²
Price120,00 €per record, own price
LimitsDay: 40Week: 180Month: ∞Total: ∞
Time windowMon to Fri, 08:00 to 18:00outside: hold
Selection

Rules with teeth, in the order that decides

A distribution profile is a list of participating partners, each with rules, and the order of the list is part of the rule. Three strategies decide what the order means: the first match, everyone who fits, or whoever has had the least this month.

  • Three strategies. Waterfall, everyone who fits, and balance by volume.
  • Four kinds of cap. Day, week, month and total, shown side by side, not just the tightest.
  • Time windows. A partner who does not work Saturdays does not get Saturday leads.
  • Duplicate checks. By email or phone, over a window you set, across partners or per partner.
The rehearsal

See the decision before it happens

The dry run puts a real record through rule by rule and lists every partner with the reason they did or did not get it. It uses the same function the real run uses, without the write path, so it cannot drift from what actually happens.

  • Every reason named. Daily cap reached, duplicate, outside window, someone came first.
  • Nothing sent, nothing written. The run says so on the result, in the result.
  • The same code as the real run. A second implementation would eventually answer differently.
  • A delivery log you can hand over. Every attempt, its key, its response, its retry.
Dry run
Runs a real record through rule by rule. Sends nothing, writes nothing.
Record 4812Rooftop DE · highest price2 partners get it
Nordkontor Vertrieb GmbH€38.00
Rheinwerk Süd GmbH—
Vialux Solar B.V.—
Alpsol Handels GmbH—
Cetus Partner GmbH€38.00
The same function the real run uses, without the write path. Nothing was sent.
Invoice 2026-0418Paid
62 leads · Nordkontor€2,356.00
Reverse charge€0.00
ZUGFeRD sent
Credit note 2026-0419Open

2 leads returned inside the deadline, credited at −€76.00. The paid invoice stays paid.

One delivery
every attempt, with its answer
Rheinwerk Süd GmbHWebhookdelivered120,00 €
  1. 09:14:02504no answer, retry in 5 minutes
  2. 09:19:02504no answer, retry in 15 minutes
  3. 09:34:02200accepted

Idempotency-Key: 8f3a…c210

Delivery

Out of your system and into theirs

A partner takes leads the way they already work: a webhook with your payload shape, or an email with the fields laid out. Every attempt carries an idempotency key, so a retry cannot become a second lead on their side.

  • Webhook or email. Per participation, with your own payload shape and headers.
  • Retried at 5, 15 and 60 minutes. Then it stops and says so, rather than retrying forever.
  • An idempotency key on every attempt. Your buyer can safely take the same call twice.
  • Returns with a deadline. A buyer may send a lead back inside the window, and only then.
Billing

The month that used to be a spreadsheet

Pay per lead at a fixed price, or a rate times a number on the record. Prices sit on the participation or the rule, so a negotiated contract overrides the house rate. At the end of the period the run produces one invoice per partner, in their tax case, with a credit note for anything returned inside the deadline.

  • Gapless numbering. A number series that survives an audit, per account.
  • Four tax cases. Domestic, reverse charge inside the EU, third country, small business.
  • ZUGFeRD and XRechnung. PDF/A-3 and the XML, from one generator, not two exports.
  • Credit notes settle themselves. A return inside the deadline lands on the next invoice.
2026-0186
Vialux Solar B.V.
44 records, September
4.180,00 €
Returned inside the deadline, 2 records
−190,00 €
Total, net3.990,00 €
Reverse charge, no VAT shownNL · B.V.
ZUGFeRDXRechnunggapless, per account

Fifteen articles on routing, delivery and billing

The dry run, goodwill returns, partner access, the invoice run and e-invoicing. This is the deepest part of the help, because it is the deepest part of the product.

15 articles, written against the product and shown inside it too.

DistributionThis is where you decide which partner receives which records. Every row is a rule: a partner, conditions, a price and limits. When a record comes in, the distribution walks the rules top to bottom and takes the first one that fits.RuleA rule window has four parts: conditions (who it matches), price (what the partner pays), limits (how much they receive at most) and delivery (where it goes). The last two apply to the partner within this distribution, not just to this one rule.Distribution settingsThese settings apply to every partner of this record type: what is never distributed at all, how selection works, what a record costs, when a duplicate is a duplicate, whether returns are allowed, and the switch that halts delivery.Dry runThe dry run takes a real record and works through the distribution without changing anything: no delivery, no price, no row in the list. It shows rule by rule what was decided and why.DeliveriesOne row per partner and record: when, to whom, with what result and at what price. This list is the evidence, and at the same time the place where you see whether a connection works.One deliveryWhat happened to this one record at this one partner: the decision, every delivery attempt, the recipient's answer and, if it came to that, the return.GoodwillOnce the return deadline has passed, a partner can no longer return a record themselves: they can only ask. Those requests sit above the delivery list, together with whatever they wrote.PartnersA partner is whoever takes records. Here you keep who they are, where they are based and where the invoice goes: nothing more. How they are supplied and what they receive belongs to the distribution, because it differs per distribution.Partner recordContact details at the top, billing details below. The billing details decide whether an invoice may be created at all, and with which tax.Partner accessHere you decide who from a partner's organisation may enter the portal, and what that organisation may change there. Those are two different questions: the role applies to a person, the right to the whole partner.Partner portalA partner with access sees three pages: their records, their invoices and their settings. They see only what belongs to them, and only the fields released for partners in the record type.BillingOne list with two kinds of rows: previews that still change, and invoices that carry a number and are therefore fixed. The number is the line between them.One documentThe lines of an invoice, its totals and its path: issued, sent, paid or corrected. Every line shows which delivery it comes from.Billing settingsWhat appears on every document, and when documents come into being. Without a complete sender the billing run issues nothing and says what is missing: an invoice without an address and a tax number is not one.E-invoicingTwo formats for the same thing: an invoice an accounting system can read. ZUGFeRD is a PDF with embedded data, XRechnung is the data on its own. Both are off by default.
Pricing

What Distribution costs

Buy just this, without the CRM: your leads are in the account either way, and routing reads them there. You pay for how many leads you send out in a month. The buyer portal and the monthly invoicing are in all three tiers, because sending leads out without billing for them is half a job.

Distribution, 50
$40.83/mo
billed yearly · $49.00/mo billed monthly
Save 17% vs monthly
Create your account
  • 50 leads a month
  • Partner portal
  • Invoicing
Above that: $0.20 a distributed lead
Most popular
Distribution, 200
$74.17/mo
billed yearly · $89.00/mo billed monthly
Save 17% vs monthly
Create your account
  • 200 leads a month
  • Partner portal
  • Invoicing
  • Analytics
Above that: $0.20 a distributed lead
Distribution, 1,000
$132.50/mo
billed yearly · $159.00/mo billed monthly
Save 17% vs monthly
Create your account
  • 1,000 leads a month
  • Partner portal
  • Invoicing
  • Analytics
Above that: $0.10 a distributed lead
Packages, everything else you can buy, and what is in every planPrices in USD, excluding VAT. Reverse charge applies inside the EU.

Questions people ask

If the answer you need is not here, the help center has the long version.

What makes this a lead distribution platform and not just a routing rule?
A rule sends a lead somewhere. A platform also answers what happened afterwards: which partners were eligible and why the rest were not, what the lead cost, whether it came back inside the deadline, and what each partner owes at the end of the month. The last part is the reason this module exists, and it is the part people are still doing in a spreadsheet.
Do you support ping post?
No. Leads are posted straight to the partners a profile selects, and the selection happens in your account rather than as an auction among buyers. Three strategies decide it: the first match, everyone who fits, or whoever has had the least this month. If your business model needs buyers to bid on each lead, this is not the tool for it.
Can my partners send a lead back?
Yes, from their own portal and only inside the deadline you set. The return carries a reason from a list you define, and it produces a credit note rather than changing an invoice that has already been paid.
What happens when no partner matches?
Nothing is delivered and the run records why: no participation, no matching rule, a duplicate, or a price that could not be computed. A record deliberately does not fall through to the next partner when the price is missing, because a lead sold at the wrong price is worse than a lead not sold.
Do I need a separate invoicing tool?
No. Invoicing is part of the distribution module: numbering, tax cases, credit notes and e-invoicing in both German formats. It is one of the reasons the module exists.
Can I see what a change to the rules would do before I make it?
That is what the dry run is for. It runs a real record through the current rules and shows the decision per partner with its reason, without sending or writing anything.

Bring the month with the most returns

Show us the spreadsheet you use to work out what each partner owes you. That is the demo we would rather give.