Your minutes and theirs will not match

4 min read

The partner invoice is higher than your CDRs for the same window. You export Last Calls. They send a CSV. One answered call shows whether the gap is a billing increment, a one-second round-up, a grace rule, a clock, or a rate that went live on the wrong day.

The VoIP Business Glossary defines a billing increment as the unit used to bill duration, such as 1/1, 6/6, or 60/60. Small differences move the margin on short calls.

Cause 1: 60/60 on their side, 1/1 on yours

A 60/60 increment rounds every call up to a full minute. A 1/1 increment bills the seconds. Voicebuy’s rate-deck guide (last edit 2026-09-10) puts it this way: a cheaper per-minute rate on 60/60 can cost more than a higher rate on 1/1.

Take an answered call that lasted 8 seconds. That figure is the arithmetic of those two labels, not a row from a Kolmisoft export.

Rule Billed seconds
1/1 8
60/60 60

Same audio. Their invoice carries 52 extra seconds. Digital Heroes (published 2026-06-26, updated 2026-08-22) describes the same split: a partner rating in sixty-second increments and you rating in one-second increments produce different billed minutes from identical calls.

Confirm it on one CDR. Pull their row and yours for the same source, destination, and start time. If their billsec is yours rounded up to the next minute, the increment is the gap.

From MOR X10, CDR Disputes imports their CSV and pairs it with local CDRs. You set a billsec tolerance in seconds and a price tolerance in currency. The wiki does not name a 60/60 field on the rate screen.

Code 22 is a billsec gap inside that tolerance, price exact. Code 32 is a billsec gap outside it. Set the tolerance to their step and code 22 means the deck behaved as written.

The A-Z tariff post says that if two source rates disagree on minimal time, increment, or connection fee, the generator keeps the maximum. A 1/1 sell deck blended with a 60/60 buy deck can come out at 60/60.

Cause 2: your billsec is a whole second, rounded up

MOR stores duration in whole seconds and rounds up. CDR Duration: 10.89 and 10.01 both become 11. Rounding: Asterisk’s real billsec of 41.155 seconds becomes 42. The wiki says the round-up favors Kolmisoft’s client, the operator, not that operator’s end customer. You can change the function in mor.conf (billsec_round_function).

The gap is one second, which separates it from a 60/60 jump. A tolerance of 1 or 2 seconds marks it as code 22. Tolerance 0 marks the same call as code 32. If the raw duration had a fraction and the stored billsec is the next integer, the round-up is the whole story.

Cause 3: grace time zeroed the call on one side

Grace time sets the price to 0 when duration is less than or equal to the grace value. The wiki example is 3 seconds: MOR does not bill a call of 3 seconds or less. Minimum time 0 does not mean “skip billing.” MOR bills a 30-second call as 30 seconds.

Your side can show price 0 and billsec 2. Their side bills those 2 seconds, or 60 on 60/60. Code 21 is price inside tolerance with billsec exact. Code 31 is price outside tolerance. Codes 23 and 33 are both fields, inside or outside the tolerance.

You set grace on the device and on the default device. The wiki says you cannot apply one grace time to reseller billing from the admin side. Grace works on user calls or on provider settings. If the reseller layer is the one losing money, check the device.

Cause 4: the clocks do not share a midnight

Digital Heroes lists day boundaries next to increments. Whose time zone, and whose clock, decides which period a call falls in. A call at 23:58 on your box can be 00:02 on theirs. The minutes moved to the next invoice.

The dispute tool pairs source and destination, then looks at start-time differences. If one difference covers more than half of the compared CDRs, that difference is the time shift for the run. Other pairs land as code 90 (not matched). Compare by Calls calculated Answer Time pairs on answer time instead. A file that is mostly code 90 needs a clock fix or a pairing change before anyone argues about rates.

Cause 5: billsec matches and the money does not

Billsec equal, price off: the duration rules agree and the rate does not. Voicebuy warns that an outdated deck, or a deck you loaded without checking the effective date, produces disputes and unexpected losses.

Automatic tariff import analyzes a provider spreadsheet before it rates live traffic. One rate-import rule in that post is a rate increase with fewer than seven days’ notice: alert, or reject. The A-Z tariff post tells you to pick effective dates on purpose and to notify customers when rates change.

Sort the dispute report to code 31. Then open the rate that was in force at the call’s start, not the rate on the deck that arrived yesterday.

What to do before the next invoice

  1. Import their CSV under BILLING → CDR → Disputes. Set direction (user or provider), the period, how many trailing digits of source and destination to compare, their currency, and the two tolerances.
  2. The CSV needs Source, Destination, Start Time, Disposition (ANSWERED, NO ANSWER, BUSY, or FAILED), Billsec, and Price. Column order does not matter. The wiki suggests eight decimal places on price and about 500 CDRs so the pairing has enough calls. Map the file once in CDR Import Templates (Billing → CDR → Import → Templates).
  3. Read codes before you write to the partner. 10 is an exact match. 21–23 sit inside the tolerance you chose. 31–33 sit outside it. 40 and 42 mean answered on one side only. 90 did not pair.
  4. On the next deck, read increment, minimal time, and connection fee with the per-minute number. If you generate a sell tariff from several vendors, see which increment the generator kept.
  5. Load the file before the effective date. Reject short-notice increases if that is your rule.
  6. Write the grace value on each device. Admin grace does not apply to reseller billing.

A per-minute profit check leaves this gap in place. PortaOne’s profit-guarantee note (2026-08-19) says a vendor can charge a full minute when you charged the customer for a few seconds. MOR’s loss-call setting compares provider rate with user rate, so it does not explain code 32.

How this maps on MOR

What you are hunting Where it lives
Pair their CSV with your CDRs and tag the gap CDR Disputes, from MOR X10
Whole-second billsec, rounded up CDR Duration, Rounding
Short calls priced at 0 Grace time
Increment kept when vendor decks disagree A-Z tariff
Deck loaded before it rates traffic Automatic tariff import

MOR runs the comparison as a background task. You cannot edit a completed dispute, and deleting it removes the imported CDRs. Check only ANSWERED Calls parks other rows on code 00.

FAQ

Is the extra minute FAS?

False Answer Supervision means a supplier starts the bill before a real answer, so billed duration exceeds the conversation. An increment mismatch bills a real answer under a coarser step. FAS clusters as short “answered” calls on one route. An increment gap scales with every short answer on a deck whose step you accepted. Separate them before you accuse the carrier.

Does MOR bill 60/60 by default?

The wiki pages used here do not state a default increment. They state that MOR stores duration in whole seconds, rounded up, and that an A-Z tariff keeps the largest increment when source rates disagree. Read the rate.

Which columns does the import need?

Source, Destination, Start Time, Disposition, Billsec, and Price. All six. Save the mapping as a CDR import template so the next file from that partner lands in the same columns.

Run one partner file before you argue about the month

Pick the supplier whose invoice is furthest from yours. Export their CDR for the disputed period. Open CDR Disputes, set a billsec tolerance that matches the step on their deck, and read the code summary. Code 22 with a one-minute step is a deck you bought. Code 32, or a pile of code 90, is the call you need to make.

The MOR online demo is the admin UI. It does not place live calls. Use the wiki for the field list. Use the demo to see where BILLING → CDR → Disputes sits.


Compare one partner file

Open CDR Disputes, set the billsec tolerance to their billing step, and read the code summary before the monthly argument.

Contact us

Leave a Reply

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