Introducing DID billing for MOR Resellers

6 min read

Introducing DID billing for MOR Resellers

You set the wholesale Reseller Rate. Your Reseller sets the retail Owner Rate. MOR bills both on the same answered inbound call, so inbound DID through the channel keeps a margin for both of you.

If you run MOR with the Reseller Addon, outbound splits the money: the user pays the Reseller, the Reseller pays you. Inbound DID did not follow that path. When a call arrived on a DID assigned to a Reseller’s user, MOR did not bill the Reseller. You absorbed the provider cost, or you invoiced it by hand.

On an answered receive call, the user pays Owner Rate and the Reseller pays Reseller Rate to you. The two charges are independent. The Reseller’s margin is Owner Rate minus Reseller Rate. You keep the wholesale. Full rules live on MOR DID Reseller Billing.

What it is and who it is for

Two-tier DID billing is a MOR change. It needs the Reseller Addon. A DID assigned to an Admin user, with no Reseller in the path, keeps Owner Rate on receive.

You sell numbers through partners: you buy DIDs from a provider, assign them to Resellers, and they assign them to their users. Inbound should bill the way outbound bills: wholesale to you, retail to them, visible in reports.

If you do not run Resellers, the DID Rates page does not grow new rows. Reseller Rate and Wholesale Incoming Rate appear while the addon is on.

Why inbound DID through resellers leaked margin

The Reseller Addon decreases the Reseller’s balance when their users make outbound calls. Inbound DID sat outside that model.

You either left inbound DID unbilled to the Reseller and ate the provider cost, or you reconstructed the charge after the fact. The Reseller could not set a retail Owner Rate against a wholesale they paid, because they were not paying one.

MOR now writes both receive charges on the CDR. Incoming had the same gap: a recognized caller (PIN/ANI) paid Incoming Rate, and when that caller belonged to a Reseller there was no wholesale Incoming charge to you. Wholesale Incoming Rate is that missing half.

How the two charges work

An inbound DID call can produce two kinds of DID charge. Receive is the party who answers. Incoming is the recognized caller who dialed. They are separate. A call can carry one, the other, or both, depending on who is on each end.

Caller  →  your DID  →  Reseller's user answers


Receive:
  user pays Owner Rate          (retail, set by the Reseller)
  Reseller pays Reseller Rate   (wholesale, set by you)


Incoming (recognized MOR user only):
  caller pays Incoming Rate
  if the caller belongs to a Reseller:
    that Reseller pays Wholesale Incoming Rate to you

Owner Rate and Reseller Rate are independent. MOR does not credit the user’s payment to the Reseller’s balance.

Open DID rates from SETTINGS → Billing → DIDs (the Rates / coins icon). A Reseller opens the same window from MAIN MENU → Routing → DIDs, and sees DIDs assigned to them.


Reseller DID Rates for an assigned DID. Incoming and Owner can be edited here; Reseller Rate and Wholesale Incoming Rate are visible and not editable. Provider Rate is not shown. Source: MOR DID Reseller Billing.

Receive example

One answered receive call to a Reseller’s user. Rates on the DID (wiki example, unitless):

Rate Amount
Provider Rate 1
Reseller Rate 2
Owner Rate 3
Party Result
User Pays 3
Reseller Pays 2 to Admin; profit 1 (3 − 2)
Admin Collects 2 from the Reseller (Provider Rate is 1)

MOR bills each party at its own rate. Reseller profit on receive is Owner Rate minus Reseller Rate, which Last Calls shows. The user’s 3 does not land on the Reseller before 2 comes off. Read the wiki example before you put production rates on live DIDs.

Incoming example

One answered incoming call. The caller is a recognized Reseller user:

Rate Amount
Incoming Rate 4
Wholesale Incoming Rate 1
Party Result
Caller Pays 4
Reseller Pays 1 to Admin; profit 3 (4 − 1)
Admin Collects 1 from the Reseller

An unrecognized PSTN dialer is not charged Incoming Rate or Wholesale Incoming Rate. If an Admin / direct user calls the same DID, Incoming Rate is billed and Wholesale Incoming Rate is not.

A Reseller-set Incoming Rate applies when the caller is a user of that Reseller. Other recognized callers use the Admin-set Incoming and Wholesale Incoming rates.

Key capabilities

Capability What you get
Independent receive rates User pays Owner Rate; Reseller pays Reseller Rate. You set wholesale; they set retail.
Independent Incoming rates Recognized caller pays Incoming Rate; that caller’s Reseller pays Wholesale Incoming Rate.
Last Calls / Quick Stats Admin profit uses the wholesale rate, not the user’s full retail. Reseller profit is retail minus wholesale.
Reseller pool Assign a DID to a Reseller with Reseller Rate set. Holding it costs nothing until an answered call.
API did_rates_get / did_rates_update. rate_type reseller and reseller_incoming when the addon is on.
Permissions Resellers set Owner Rate (and Incoming in the GUI). They cannot change Reseller Rate, Wholesale Incoming Rate, or Provider Rate.

Who sets which rate

Rate Who sets it Who pays
Owner Rate Reseller, when Resellers can add their own DIDs is on and the DID is assigned to one of their users The Reseller’s user who receives the call
Reseller Rate Admin or Accountant The Reseller, on an answered receive
Incoming Rate Admin or Accountant on every DID; Reseller (GUI) on DIDs assigned to that Reseller The recognized user who calls the DID
Wholesale Incoming Rate Admin or Accountant The Reseller who owns the recognized caller
Provider Rate Admin or Accountant Your DID provider cost (unchanged)

Reseller Rate and Wholesale Incoming Rate show on the DID Rates page while the Reseller Addon is active. Wholesale Incoming Rate shows on every DID, so you can set the wholesale Incoming price before a Reseller user dials. Billing for that wholesale amount starts when a recognized Reseller user calls the DID.

Tariff by CallerID is available for Reseller Rate the same way it is for Owner Rate and Provider Rate on MOR DID Billing. Work days / free days and interval bulk management apply to the new rates.

Reports

In STATISTICS → Calls → Last Calls:

  • Admin profit on receive uses Reseller Rate together with Provider Rate. It does not treat the user’s full Owner Rate as Admin revenue.
  • Reseller profit on receive is Owner Rate minus Reseller Rate.
  • For an incoming call from a recognized Reseller user, Admin profit uses Wholesale Incoming Rate. Admin revenue is that wholesale amount, not the caller’s full Incoming Rate.
  • Reseller profit on Incoming is Incoming Rate minus Wholesale Incoming Rate.

Quick Stats follows the same split: Admin profit is wholesale, Reseller profit is the retail-minus-wholesale remainder.

Pool and API

Admin may set Reseller Rate on a DID assigned to a Reseller but not yet assigned to a user (the Reseller pool). Holding it costs nothing. Billing starts on answered calls to or from the Reseller’s users.

MOR API did rates get and MOR API did rates update accept Admin, Accountant, and Reseller (addon on, and Resellers can add their own DIDs enabled).

  • A Reseller sees DIDs assigned to that Reseller.
  • rate_type reseller is the Reseller Rate row. A Reseller cannot create or change that row.
  • rate_type reseller_incoming is the Wholesale Incoming Rate row. Admin and Accountant set it. A Reseller cannot create or change that row.
  • A Reseller may update owner rates on DIDs assigned to their users.
  • A Reseller cannot update Incoming through the API. Incoming Rate is changed in the GUI on DIDs assigned to that Reseller.
  • If the Reseller Addon is off, reseller and reseller_incoming are rejected.

Getting started

  1. Confirm the Reseller Addon is active. Without it, Reseller Rate and Wholesale Incoming Rate do not appear.
  2. If Resellers should set Owner Rate themselves, enable Resellers can add their own DIDs under ADDONS → Resellers → Settings.
  3. Assign a DID to a Reseller (SETTINGS → Billing → DIDs). Set Reseller Rate and Wholesale Incoming Rate on that DID. You can do this while the DID sits in the Reseller pool; there is no holding charge.
  4. Let the Reseller assign the DID to a user and set Owner Rate. They can also set Incoming Rate in the GUI on DIDs assigned to them.
  5. Place one answered receive call to that user’s DID, and one Incoming call from a recognized Reseller user if you use Incoming.
  6. Open Last Calls. Check Admin profit against Reseller Rate / Wholesale Incoming Rate, and Reseller profit against the spread. If Admin profit matches the wholesale rate and Reseller profit matches the spread, the rates are set.

What’s next

The operator manual is MOR DID Reseller Billing: permission matrix, worked examples, and API rate_type values.

The same cycle shipped Number Pool usage limits, PJSIP Support Path, and Purge User data for Resellers. See the 2026 August Development Update.

FAQ

Do I need the Reseller Addon?

Yes. Reseller Rate and Wholesale Incoming Rate appear while the addon is on. A DID assigned to an Admin user (no Reseller) has no Reseller Rate.

Does holding a DID in the Reseller pool cost anything?

No. Admin can set Reseller Rate on a DID assigned to a Reseller but not yet to a user. Billing starts on answered calls to or from the Reseller’s users.

Can a Reseller change my wholesale rates?

No. They can see Reseller Rate and Wholesale Incoming Rate. They cannot change those rows or Provider Rate. They set Owner Rate (when the setting above is on) and Incoming Rate in the GUI on their DIDs.

What if the caller is not a recognized MOR user?

Incoming Rate and Wholesale Incoming Rate are not charged. Receive applies if a Reseller’s user answers: Owner Rate to the user, Reseller Rate to the Reseller.

Does the user’s Owner Rate payment credit the Reseller’s balance?

No. The two receive charges are independent. Reseller profit on receive is Owner Rate minus Reseller Rate, which Last Calls shows. MOR does not credit the user’s payment to the Reseller.

Summary

Piece Admin Reseller User / caller
Receive Collects Reseller Rate Pays Reseller Rate; profit = Owner − Reseller Pays Owner Rate
Incoming (recognized Reseller user) Collects Wholesale Incoming Rate Pays Wholesale Incoming; profit = Incoming − Wholesale Incoming Pays Incoming Rate
Pool Sets Reseller Rate with no holding charge Holds the DID until assigned Billed on answered calls
API Sets reseller and reseller_incoming Updates owner n/a

To turn this on for a live Reseller, set Reseller Rate on one DID, have them set Owner Rate, complete one answered call, and confirm Last Calls. The step-by-step rate rules are on MOR DID Reseller Billing.

Leave a Reply

Your email address will not be published. Required fields are marked *