In wholesale and retail VoIP operations, every second of every call translates directly into revenue or cost. A billing system that rounds call durations incorrectly or calculates fees with imprecise methods can silently erode profit margins or create disputes with vendors and clients. VOS3000 billing precision is the set of configuration parameters and rules that govern how call durations are rounded, how billing increments are applied, and how fees are calculated in CDR (Call Detail Record) records. Understanding and configuring these settings correctly is essential for any VoIP carrier that wants accurate billing, fair reconciliation, and maximum revenue protection.
This guide provides a complete walkthrough of VOS3000 billing precision based on VOS3000 2.1.9.07 Manual Section 4.3.5.1 (Softswitch Cluster Parameters) and Section 2.3 (Billing Fundamentals). We cover the SS_BILLINGUNIT system parameter, per-rate-table billing unit overrides, duration rounding logic, rounding modes, SS_STARTBILLINGTIME configuration, fee calculation formulas, and practical use cases for wholesale, retail, and calling card deployments. Whether you are setting up a new VOS3000 billing system or troubleshooting CDR fee discrepancies, this guide has everything you need. For professional assistance with VOS3000 billing configuration, contact us on WhatsApp at +8801911119966.
Billing precision in VOS3000 refers to the granularity and accuracy with which call durations are measured and fees are calculated. It encompasses several interconnected settings that determine how raw call duration (the actual time from answer to hangup) is transformed into a billed duration and ultimately into a fee amount on the CDR.
At its core, billing precision answers three fundamental questions for every call processed by VOS3000:
These three questions may seem simple, but their answers have a profound impact on revenue. Consider a wholesale carrier processing 10 million calls per day. A 1-second rounding difference per call, at an average rate of $0.01 per minute, translates to approximately $1,667 per day or over $600,000 per year in either lost revenue or overbilling disputes. VOS3000 billing precision gives you the controls to manage this precisely, ensuring that your billing matches your business agreements with clients and vendors.
For a broader understanding of VOS3000 billing architecture, see our VOS3000 billing system guide.
Duration rounding is the process of converting the actual call duration into a billed duration based on the configured billing unit. The actual duration is the real time the call was connected — measured from the SIP 200 OK (answer) to the SIP BYE (hangup). The billed duration is the duration after the billing unit increment has been applied.
VOS3000 always rounds up to the next billing increment. This means if a call lasts 65 seconds and the billing unit is 60 seconds, the billed duration is 120 seconds (2 minutes). If the billing unit is 6 seconds and the call lasts 67 seconds, the billed duration is 72 seconds (12 increments of 6 seconds). This upward rounding is standard in the telecom industry and ensures the provider captures the full value of each partial increment.
The rounding formula is straightforward:
Billed Duration = CEILING(Actual Duration / Billing Unit) x Billing Unit Examples: - Actual duration: 45s, Billing unit: 1s → Billed: 45s (45 x 1) - Actual duration: 45s, Billing unit: 6s → Billed: 48s (8 x 6) - Actual duration: 45s, Billing unit: 12s → Billed: 48s (4 x 12) - Actual duration: 45s, Billing unit: 30s → Billed: 60s (2 x 30) - Actual duration: 45s, Billing unit: 60s → Billed: 60s (1 x 60) - Actual duration: 65s, Billing unit: 60s → Billed: 120s (2 x 60)
Understanding this rounding behavior is critical for reconciling your VOS3000 CDR records with vendor invoices. A vendor using per-second billing will bill you for 65 seconds on a 65-second call, but your VOS3000 system using 60-second billing will bill your client for 120 seconds on the same call. The 55-second difference is your margin on the billing increment — or a dispute if your client also uses per-second billing. For help resolving billing reconciliation discrepancies, contact us on WhatsApp at +8801911119966.
| ⏱️ Actual Duration | 📐 Billing Unit | 📊 Billed Duration | 📈 Increment Count | 💡 Rounding Explanation |
|---|---|---|---|---|
| 45 seconds | 1 second | 45 seconds | 45 increments | Exact match, no rounding needed |
| 45 seconds | 6 seconds | 48 seconds | 8 increments | 45/6=7.5 → rounded up to 8 |
| 45 seconds | 12 seconds | 48 seconds | 4 increments | 45/12=3.75 → rounded up to 4 |
| 45 seconds | 30 seconds | 60 seconds | 2 increments | 45/30=1.5 → rounded up to 2 |
| 45 seconds | 60 seconds | 60 seconds | 1 increment | 45/60=0.75 → rounded up to 1 |
| 65 seconds | 60 seconds | 120 seconds | 2 increments | 65/60=1.08 → rounded up to 2 |
| 3 seconds | 6 seconds | 6 seconds | 1 increment | 3/6=0.5 → rounded up to 1 (minimum charge) |
The billing unit is the fundamental building block of VOS3000 billing precision. It defines the minimum increment of time for which a call is charged. Every call duration is divided by the billing unit, and the result is rounded up to the nearest whole number to determine the number of billable increments. The fee is then calculated by multiplying the rate per increment by the number of increments.
VOS3000 supports the following billing unit options:
| 📐 Billing Unit | 📝 Description | 🎯 Typical Use Case | 💰 Revenue Impact | 📊 Avg. Overbilling % |
|---|---|---|---|---|
| 1 second | Per-second billing, maximum precision | Wholesale carriers, competitive accounts | Lowest — near-exact billing | ~0.5% |
| 6 seconds | 6-second increment billing | Calling card platforms, prepaid services | Low — small increment margin | ~2-3% |
| 12 seconds | 12-second increment billing | Mid-tier retail, enterprise clients | Moderate — noticeable margin on short calls | ~4-6% |
| 30 seconds | 30-second increment billing | Standard retail, consumer VoIP | Higher — significant margin on partial units | ~8-12% |
| 60 seconds | Per-minute billing, 1-minute minimum | Premium retail, mobile termination | Highest — every call billed full minute minimum | ~15-25% |
The “Avg. Overbilling %” column represents the average additional revenue captured compared to exact per-second billing, based on a typical distribution of call durations. These figures are approximate and vary based on your actual traffic pattern, but they illustrate the significant revenue difference between billing unit choices.
The SS_BILLINGUNIT parameter is the system-wide default billing increment configured in the VOS3000 softswitch cluster parameters (Section 4.3.5.1). This parameter sets the default billing unit for all rate tables that do not have a per-rate-table billing unit override. Navigate to Operation Management > Softswitch Management > Additional Settings > System Parameter to locate and modify this parameter.
The SS_BILLINGUNIT value is specified in seconds. Common values include:
SS_BILLINGUNIT Parameter Values: SS_BILLINGUNIT = 1 → Per-second billing (1-second increment) SS_BILLINGUNIT = 6 → 6-second increment billing SS_BILLINGUNIT = 12 → 12-second increment billing SS_BILLINGUNIT = 30 → 30-second increment billing SS_BILLINGUNIT = 60 → Per-minute billing (60-second increment) Default value: 60 (per-minute billing) Location: Operation Management > Softswitch Management > Additional Settings > System Parameter
When you change SS_BILLINGUNIT, the new value applies to all calls processed after the change. Existing CDR records are not retroactively recalculated. It is important to plan billing unit changes during low-traffic periods and communicate the change to billing and finance teams. For comprehensive documentation of all VOS3000 system parameters, see our VOS3000 system parameters guide.
While SS_BILLINGUNIT provides the system-wide default, VOS3000 also supports a per-rate-table billing unit override. This means each individual rate table can define its own billing increment, which takes precedence over the system default when calculating fees for calls that use that rate table.
This feature is essential for carriers that offer different billing granularities to different customer segments. For example:
The per-rate-table billing unit is configured directly in the rate table settings. When a call is processed, VOS3000 checks the rate table associated with the call’s rate plan. If the rate table has a billing unit defined, that value is used. If no per-rate-table billing unit is set, VOS3000 falls back to the SS_BILLINGUNIT system parameter value.
This hierarchical approach gives carriers the flexibility to run multiple billing models on a single VOS3000 platform — a critical capability for multi-tenant and multi-service deployments. For help configuring rate tables with different billing units, contact us on WhatsApp at +8801911119966.
The SS_STARTBILLINGTIME parameter controls when the billing clock starts for each call. This is a critical setting because it determines whether setup time (the time the phone is ringing before the called party answers) is included in the billed duration. VOS3000 Manual Section 4.3.5.1 defines this parameter with two possible values.
| ⚙️ Parameter Value | 📞 Billing Start Point | 📝 Description | 🎯 When to Use |
|---|---|---|---|
| 0 (Connect) | SIP 200 OK (Answer) | Billing starts when the called party answers the call. Ring time is not billed. | Standard for most VoIP deployments. Fair to end users — only connected time is charged. |
| 1 (Setup) | SIP INVITE (Setup) | Billing starts when the SIP INVITE is sent. Ring time is included in the billed duration. | Used when the provider wants to charge for network resources used during setup, including unanswered calls. |
The choice between connect-time and setup-time billing has significant business implications. With connect-time billing (value 0, the default), a call that rings for 30 seconds and is never answered has zero billed duration and generates no revenue. With setup-time billing (value 1), that same unanswered call would be billed for at least one billing increment (e.g., 60 seconds if SS_BILLINGUNIT is 60).
Most VoIP carriers use connect-time billing because it aligns with customer expectations — customers expect to pay only for time they are actually connected. However, setup-time billing may be appropriate for:
It is critical that the SS_STARTBILLINGTIME setting matches what is agreed upon in your interconnect agreements with clients and vendors. A mismatch between your billing start time and your vendor’s billing start time can create reconciliation discrepancies that are difficult to resolve. For guidance on configuring SS_STARTBILLINGTIME for your specific business model, reach out on WhatsApp at +8801911119966.
After the billed duration is calculated and the fee is computed, the resulting amount may have more decimal places than the currency precision allows. For example, a rate of $0.0235 per minute multiplied by a 48-second billed duration (using 6-second billing unit) produces a fee of $0.0188. If the currency is configured for 4 decimal places, the fee is $0.0188. If the currency is configured for 2 decimal places, the fee must be rounded to $0.02.
VOS3000 applies rounding to fees based on the currency precision configured for the account. The standard rounding mode in VOS3000 follows the conventional mathematical rounding rules:
This rounding is applied at the individual CDR level — each call’s fee is rounded independently before being written to the CDR. This means that rounding effects do not accumulate across calls in the CDR, but they do affect the total invoice amount when many calls with small fractional amounts are summed.
For high-volume wholesale operations processing millions of calls, the cumulative effect of rounding can be significant. A carrier billing 10 million calls per day with an average rounding loss of $0.0001 per call loses approximately $1,000 per day or $365,000 per year. This is why many wholesale carriers choose per-second billing with high-precision currency settings (4 or more decimal places) to minimize rounding impact.
The VOS3000 fee calculation follows a precise formula that incorporates the rate, billed duration, and billing unit. Understanding this formula is essential for verifying CDR fee amounts and troubleshooting billing discrepancies.
VOS3000 Fee Calculation Formula: Step 1: Calculate Billed Duration Billed Duration = CEILING(Actual Duration / Billing Unit) x Billing Unit Step 2: Calculate Number of Billable Increments Increments = Billed Duration / Billing Unit Step 3: Calculate Rate Per Increment Rate Per Increment = Rate Per Minute / (60 / Billing Unit) Or equivalently: Rate Per Increment = Rate Per Minute x Billing Unit / 60 Step 4: Calculate Fee Fee = Increments x Rate Per Increment Step 5: Apply Rounding Rounded Fee = ROUND(Fee, Currency Precision) Complete Formula: Fee = CEILING(Duration / BillingUnit) x BillingUnit x (RatePerMinute / 60)
Let us work through a concrete example to demonstrate the complete calculation:
| 📊 Example | ⏱️ Actual Duration | 📐 Billing Unit | 💵 Rate/Min | 📏 Billed Duration | 💰 Calculated Fee |
|---|---|---|---|---|---|
| Per-second wholesale | 65 seconds | 1 second | $0.0100 | 65 seconds | $0.01083 |
| 6-second calling card | 65 seconds | 6 seconds | $0.0300 | 66 seconds | $0.03300 |
| 12-second retail | 65 seconds | 12 seconds | $0.0500 | 72 seconds | $0.06000 |
| 30-second standard | 65 seconds | 30 seconds | $0.0800 | 90 seconds | $0.12000 |
| 60-second premium retail | 65 seconds | 60 seconds | $0.1000 | 120 seconds | $0.20000 |
Notice how the same 65-second call produces dramatically different fee amounts depending on the billing unit. The per-second billing example charges for exactly 65 seconds, while the 60-second billing example charges for a full 2 minutes — nearly double the actual duration. This is why choosing the right billing unit is one of the most impactful billing decisions you make in VOS3000.
One of the most common sources of confusion in VOS3000 billing is the difference between the “duration” field and the “billed duration” field in CDR records. Understanding this distinction is essential for accurate billing analysis and vendor reconciliation.
| 📋 CDR Field | 📝 Meaning | ⚙️ How Calculated | 💡 Example |
|---|---|---|---|
| Duration (Actual Duration) | Real time from answer to hangup | Measured from SIP 200 OK to SIP BYE | 65 seconds |
| Billed Duration | Duration after billing unit rounding | CEILING(Duration / BillingUnit) x BillingUnit | 120 seconds (with 60s billing unit) |
| Fee | Calculated charge for the call | Billed Duration x (Rate Per Minute / 60) | $0.2000 (at $0.10/min) |
The actual duration field in the CDR represents the true connected time of the call — what you would see if you measured the time from when the called party picked up to when either party hung up. The billed duration field represents the duration after the billing unit rounding has been applied. The fee is always calculated based on the billed duration, not the actual duration.
This distinction becomes critical during bilateral reconciliation with vendors. Your vendor’s CDR will show the actual duration (or their version of the billed duration based on their billing unit), while your VOS3000 CDR will show your billed duration based on your billing unit. If both parties use different billing units, the durations will not match, even though the actual call time is identical. For more on managing CDR data, see our VOS3000 CDR and MySQL data maintenance guide.
Wholesale carriers operate on thin margins with high volume. Per-second billing (billing unit = 1) is the industry standard for wholesale interconnects because it provides the most accurate and transparent billing. When a wholesale client compares your rates with a competitor, per-second billing demonstrates confidence in your pricing and eliminates disputes over billing increment differences.
Configuration for per-second wholesale billing:
Wholesale Per-Second Billing Configuration: SS_BILLINGUNIT = 1 (or set billing unit = 1 in wholesale rate tables) SS_STARTBILLINGTIME = 0 (connect-time billing) Currency Precision = 4 or more decimal places Revenue Impact: Near-exact billing, minimal overbilling Best for: Competitive wholesale accounts, interconnect agreements
Retail VoIP providers serving consumer and small-business customers typically use 60-second billing (billing unit = 60) to maximize revenue per call. The 60-second minimum means that even a 5-second call is billed for a full minute, and a 65-second call is billed for 2 full minutes. This model generates significantly higher revenue per minute of actual usage compared to per-second billing.
| 📞 Call Duration | ⏱️ Billed (1s Unit) | 💵 Fee (1s @ $0.05/min) | ⏱️ Billed (60s Unit) | 💵 Fee (60s @ $0.05/min) | 📈 Revenue Difference |
|---|---|---|---|---|---|
| 5 seconds | 5 seconds | $0.0042 | 60 seconds | $0.0500 | +1090% |
| 30 seconds | 30 seconds | $0.0250 | 60 seconds | $0.0500 | +100% |
| 61 seconds | 61 seconds | $0.0508 | 120 seconds | $0.1000 | +97% |
| 90 seconds | 90 seconds | $0.0750 | 120 seconds | $0.1000 | +33% |
| 180 seconds | 180 seconds | $0.1500 | 180 seconds | $0.1500 | 0% (exact minute) |
As this table demonstrates, the revenue advantage of 60-second billing is most pronounced on short calls. For calls that are exact multiples of 60 seconds, there is no difference. For calls that are even 1 second over a full minute, 60-second billing captures an additional full minute of revenue.
Calling card and prepaid platforms need a billing increment that balances revenue with customer perception. A 60-second billing unit on calling cards would cause rapid balance depletion for short calls, leading to customer complaints. Per-second billing provides the most accuracy but does not generate enough margin on the increment to be profitable for calling card operations. The 6-second increment is the industry sweet spot.
With 6-second billing, a 65-second call is billed for 66 seconds (11 increments of 6 seconds). This provides a small but consistent margin on each partial increment while keeping the billing reasonably close to the actual duration. Customers perceive the billing as fair because the overbilling is limited to a maximum of 5 seconds per call, and the provider captures incremental revenue on every call that does not end on an exact 6-second boundary.
Configuration for calling card billing:
Calling Card 6-Second Billing Configuration: SS_BILLINGUNIT = 6 (or set billing unit = 6 in calling card rate tables) SS_STARTBILLINGTIME = 0 (connect-time billing only) Currency Precision = 4 decimal places Revenue Impact: Moderate — consistent small margin per call Best for: Prepaid platforms, calling cards, callback services
Bilateral reconciliation is the process of comparing your VOS3000 CDR records with your vendor’s CDR records to ensure that both parties agree on the call volumes, durations, and fees. Billing precision settings directly affect reconciliation outcomes because they determine how durations are rounded and fees are calculated.
The most common reconciliation issue is a CDR duration mismatch. This occurs when your VOS3000 CDR shows a different billed duration than your vendor’s CDR for the same call. The mismatch is almost always caused by different billing unit settings between the two systems. For example:
To successfully reconcile with vendors, always compare the actual duration fields, not the billed duration fields. The actual duration should match (or be very close, allowing for minor timing differences in SIP message detection). If you need to compare fees, recalculate both sides using the same billing unit to get an apples-to-apples comparison.
For help setting up rate tables that align with vendor billing parameters, see our VOS3000 prefix and rate settings guide and our VOS3000 LCR routing guide.
When you observe a CDR duration mismatch with a vendor, follow this diagnostic process:
If you need professional assistance with CDR reconciliation or billing dispute resolution, contact us on WhatsApp at +8801911119966.
Use this comprehensive checklist to ensure your VOS3000 billing precision is configured correctly for your business requirements. Each item should be verified and documented.
| ✅ Step | 📋 Configuration Item | 📝 Details | ⚠️ Warning |
|---|---|---|---|
| 1 | Set SS_BILLINGUNIT | Configure system-wide default billing increment in seconds | Changing this affects all rate tables without per-table override |
| 2 | Set SS_STARTBILLINGTIME | Choose 0 (connect) or 1 (setup) for billing start point | Must match vendor and client interconnect agreements |
| 3 | Configure per-rate-table billing units | Override system default in each rate table as needed | Per-rate-table value overrides SS_BILLINGUNIT for that table |
| 4 | Set currency precision | Configure decimal places for fee rounding | Low precision (2 decimals) causes more rounding loss at high volume |
| 5 | Verify rate calculation formula | Test with sample calls to confirm fee matches expected calculation | Always test before going live with new rate tables |
| 6 | Align with vendor billing parameters | Confirm vendor billing unit and start time match your configuration | Mismatch causes reconciliation failures and billing disputes |
| 7 | Run CDR reconciliation test | Compare a sample of CDR records with vendor CDRs | Do this before committing to production billing |
| 8 | Document all billing precision settings | Record SS_BILLINGUNIT, SS_STARTBILLINGTIME, and per-rate-table values | Essential for audit trails and future troubleshooting |
Billing precision in VOS3000 refers to the set of configuration parameters that control how call durations are measured, rounded, and converted into fees on CDR records. It includes the billing unit (minimum billing increment), the billing start time (when the clock starts), the rounding mode (how fractional fees are rounded), and the currency precision. These settings collectively determine how accurately and fairly calls are billed, directly impacting revenue and vendor reconciliation.
The billing unit directly affects revenue by determining the minimum charge for each call and how partial increments are rounded up. A larger billing unit (e.g., 60 seconds) generates more revenue per call than a smaller billing unit (e.g., 1 second) because every call is rounded up to the next full increment. On average, switching from per-second billing to 60-second billing increases revenue by 15-25% on the same traffic, with the greatest impact on short-duration calls. However, higher billing units may make your rates less competitive in the wholesale market.
SS_BILLINGUNIT is a VOS3000 softswitch cluster parameter (documented in Section 4.3.5.1) that sets the system-wide default billing increment in seconds. It determines the minimum unit of time for which calls are billed. For example, SS_BILLINGUNIT = 60 means all calls are billed in 60-second increments. Individual rate tables can override this default with their own billing unit value. The parameter is configured in Operation Management > Softswitch Management > Additional Settings > System Parameter.
VOS3000 always rounds call durations up to the next billing increment using the ceiling function. The formula is: Billed Duration = CEILING(Actual Duration / Billing Unit) x Billing Unit. For example, with a 6-second billing unit, a call lasting 65 seconds is billed as 66 seconds (CEILING(65/6) x 6 = 12 x 6 = 72, or more precisely CEILING(65/6) = 11, so 11 x 6 = 66 seconds). This upward rounding is standard in the telecom industry and ensures the provider captures the full value of each partial increment.
The “duration” field (actual duration) in a VOS3000 CDR represents the real connected time of the call, measured from SIP 200 OK (answer) to SIP BYE (hangup). The “billed duration” field represents the duration after the billing unit rounding has been applied. For example, a call with an actual duration of 65 seconds and a 60-second billing unit would show 65 seconds in the duration field and 120 seconds in the billed duration field. The fee is always calculated based on the billed duration, not the actual duration.
The billing start time in VOS3000 is controlled by the SS_STARTBILLINGTIME parameter. When set to 0 (default), billing starts when the called party answers (SIP 200 OK) — this is called connect-time billing. When set to 1, billing starts when the SIP INVITE is sent — this is called setup-time billing, which includes the ringing time. Most VoIP deployments use connect-time billing because it only charges for time the parties are actually connected. The setting must match your interconnect agreements with clients and vendors.
To configure per-second billing in VOS3000, set the SS_BILLINGUNIT parameter to 1. This can be done at the system level (affecting all rate tables) by changing the softswitch cluster parameter, or at the individual rate table level by setting the billing unit to 1 second in the rate table configuration. Per-rate-table settings override the system default, so you can run per-second billing for wholesale accounts while maintaining 60-second billing for retail accounts on the same VOS3000 platform. Also ensure SS_STARTBILLINGTIME = 0 for standard connect-time billing, and set currency precision to at least 4 decimal places to minimize fee rounding impact.
VOS3000 billing precision is not just a technical configuration — it is a core business control that directly impacts your revenue, customer relationships, and vendor reconciliation accuracy. Every parameter from SS_BILLINGUNIT to SS_STARTBILLINGTIME, from per-rate-table billing unit overrides to currency rounding precision, plays a role in ensuring that every call is billed fairly, accurately, and in accordance with your business agreements.
The key takeaways from this guide are:
For professional VOS3000 billing configuration, CDR analysis, and vendor reconciliation support, our team is ready to help. Contact us on WhatsApp at +8801911119966 for expert assistance with your VOS3000 deployment. You can also download the latest VOS3000 software from the official VOS3000 downloads page.
For professional VOS3000 installations and deployment, VOS3000 Server Rental Solution:
📱 WhatsApp: +8801911119966
🌐 Website: www.vos3000.com
🌐 Blog: multahost.com/blog
📥 Downloads: VOS3000 Downloads
VOS3000 max call duration limit prevents excessively long calls that drain account balances. Configure SS_MAXCALLDURATION…
VOS3000 no media hangup automatically disconnects ghost calls when RTP media stops. Configure SS_NOMEDIAHANGUPTIME to…
VOS3000 registration flood protection stops SIP REGISTER floods that overload your softswitch. Learn how to…
VOS3000 authentication suspend prevents brute-force attacks by locking accounts after repeated failed SIP registration attempts.…
VOS3000 call failed announcement plays IVR voice prompts when calls fail. Configure the IVR module…
VOS3000 G729 negotiation mode fixes codec mismatch between G729 and G729a. Configure Auto/G729/G729a/G729&G729a modes in…