Calculate Accounts Receivable Balance Using DSO – Free Online Tool


Calculate Accounts Receivable Balance Using DSO

Accurately estimate your outstanding accounts receivable by understanding your Days Sales Outstanding (DSO).

Accounts Receivable Balance Calculator



Your average total outstanding invoices over a period (e.g., quarterly, annually).

Please enter a valid positive number.



Total revenue after returns, allowances, and discounts for the same period.

Please enter a valid positive number.



The number of days in the period you are analyzing (e.g., 365 for annual, 90 for quarterly).

Please enter a valid positive number.



Results


Days Sales Outstanding (DSO)

Average Daily Revenue

Estimated AR Balance

Formula Used:

1. DSO = (Average Accounts Receivable / Net Sales) * Number of Days in Period

2. Average Daily Revenue = Net Sales / Number of Days in Period

3. Estimated AR Balance = DSO * Average Daily Revenue
(Note: The primary result shown is the calculated Average Daily Revenue, as it’s a core metric derived from your inputs. The DSO and Estimated AR Balance are also displayed for comprehensive analysis.)

DSO Benchmarks Table

Typical DSO Ranges by Industry
Industry Excellent (< 30 Days) Good (30-45 Days) Average (45-60 Days) Needs Improvement (> 60 Days)
Software/SaaS Technology, Cloud Services Consulting, Professional Services Manufacturing (some types), Wholesale Construction, Government Contractors
Retail High-Volume, Fast Turnaround Apparel, Electronics Furniture, Home Goods Specialty Goods with Long Lead Times
Healthcare Hospitals (with efficient billing) Specialty Clinics, Labs Durable Medical Equipment Long-Term Care Facilities, Home Health
Manufacturing High-Volume, Standard Terms Customized Products, Tier 1 Suppliers Heavy Machinery, Auto Parts Aerospace, Defense (long project cycles)
Services Agencies, IT Support Legal, Accounting Trades (Plumbing, Electrical) Large-Scale Project Management

Note: These are general benchmarks and can vary significantly based on specific business models, payment terms, and economic conditions. Consult industry-specific reports for precise figures.

DSO Trend Analysis

Visualizing the relationship between average AR, Net Sales, and resulting DSO over a simulated period.

What is Accounts Receivable Balance using DSO?

{primary_keyword} is a crucial financial metric that helps businesses understand how effectively they are collecting payments from their customers. It essentially measures the average number of days it takes for a company to collect payment after a sale has been made. By calculating the accounts receivable balance using DSO, businesses gain insights into their cash flow efficiency, liquidity, and the potential risks associated with outstanding debts. This metric is particularly vital for companies that extend credit to their customers, as a high DSO can signal potential cash flow problems and an inefficient collections process.

Who should use it: Financial managers, accountants, business owners, credit managers, and analysts rely on DSO. It’s indispensable for businesses offering credit terms (B2B and B2C), managing cash flow, assessing credit policies, and benchmarking performance against industry peers. Understanding your DSO helps in making informed decisions about credit extensions, collection strategies, and overall financial health. A well-managed DSO contributes significantly to a healthy accounts receivable balance.

Common misconceptions: A frequent misconception is that a lower DSO is *always* better. While generally true, an extremely low DSO might indicate that a company is being too strict with its credit terms, potentially losing sales opportunities. Conversely, a very high DSO clearly points to issues in collections or credit policies. Another error is not comparing DSO to industry averages or historical trends, making it difficult to interpret its significance. It’s also important to use consistent periods and accurate net sales figures for meaningful calculations of the accounts receivable balance using DSO.

{primary_keyword} Formula and Mathematical Explanation

The core calculation for determining the effectiveness of collecting payments, and thus understanding the accounts receivable balance, revolves around the Days Sales Outstanding (DSO). The formula is designed to provide a clear picture of how many days, on average, it takes to convert credit sales into cash.

The Primary DSO Formula:

DSO = (Average Accounts Receivable / Net Sales) * Number of Days in Period

Let’s break down each component:

  • Average Accounts Receivable (AR): This represents the average amount of money owed to your company by customers over a specific period. To calculate this, you typically take the sum of your AR balance at the beginning and end of the period and divide by two. A more accurate method involves averaging AR balances from more frequent intervals (e.g., monthly or weekly) if available.
  • Net Sales: This is the total revenue generated from sales after accounting for returns, allowances, and discounts. It’s crucial to use net sales, not gross sales, as these represent the actual revenue the company expects to collect.
  • Number of Days in Period: This is the duration over which you are analyzing the sales and receivables. For annual analysis, it’s typically 365 days. For quarterly analysis, it’s 90 or 91 days.

Derivation for the Calculator’s Main Output (Average Daily Revenue):

While DSO is the primary metric, our calculator also highlights Average Daily Revenue and uses these to estimate the AR Balance. The Average Daily Revenue is derived straightforwardly:

Average Daily Revenue = Net Sales / Number of Days in Period

Estimating the Accounts Receivable Balance:

Once DSO and Average Daily Revenue are established, we can estimate the current accounts receivable balance by rearranging the DSO formula or using the calculated values:

Estimated AR Balance = Average Daily Revenue * DSO

This provides a practical estimate of the company’s outstanding receivables based on its collection efficiency and daily sales volume. This is the core of understanding your accounts receivable balance using DSO.

Variables Table:

Variable Definitions for DSO Calculation
Variable Meaning Unit Typical Range
Average Accounts Receivable Average total outstanding invoices from customers. Currency (e.g., USD, EUR) Varies widely by business size. Can range from thousands to millions.
Net Sales Total revenue after deductions (returns, discounts, allowances). Currency (e.g., USD, EUR) Varies widely by business size and industry.
Number of Days in Period The length of the analysis period in days. Days 90 (Quarterly), 365 (Annually)
DSO (Days Sales Outstanding) Average number of days to collect payment. Days 20-70 days common, but highly industry-dependent. < 30 is excellent for many.
Average Daily Revenue Average revenue generated per day. Currency per Day (e.g., USD/Day) Varies widely. Derived from Net Sales and Period Days.
Estimated AR Balance Projected outstanding amount owed by customers. Currency (e.g., USD, EUR) Calculated based on DSO and Average Daily Revenue.

Practical Examples (Real-World Use Cases)

Understanding the practical application of the accounts receivable balance using DSO calculator is key. Here are two detailed examples:

Example 1: A Growing Software Company

Scenario: “Innovate Solutions,” a SaaS provider, wants to assess its collection efficiency for the last fiscal year.

  • Average Accounts Receivable: $750,000 (average of beginning and end-of-year balances)
  • Net Sales: $3,000,000 (for the full year)
  • Number of Days in Period: 365 days

Calculator Inputs:

  • Average Accounts Receivable: 750000
  • Net Sales: 3000000
  • Number of Days in Period: 365

Calculator Outputs:

  • Calculated DSO: 91.25 Days
  • Average Daily Revenue: $8,219.18
  • Estimated AR Balance: $750,000 (This matches the input, demonstrating the formula’s consistency)

Financial Interpretation: Innovate Solutions has a DSO of over 91 days. This means it takes, on average, about three months to collect payments. For a SaaS company, especially one with recurring revenue models, this DSO might be considered high. It suggests potential issues with billing cycles, payment terms, or collections efforts. The company might be tying up too much cash in receivables, impacting its ability to reinvest or manage operational expenses efficiently. They should review their credit policies and streamline their invoicing and follow-up procedures.

Example 2: A Small Manufacturing Business

Scenario: “Precision Parts Inc.,” a manufacturer selling to other businesses, wants to understand its receivables for the last quarter.

  • Average Accounts Receivable: $120,000 (average of monthly balances for the quarter)
  • Net Sales: $450,000 (for the quarter)
  • Number of Days in Period: 90 days

Calculator Inputs:

  • Average Accounts Receivable: 120000
  • Net Sales: 450000
  • Number of Days in Period: 90

Calculator Outputs:

  • Calculated DSO: 24 Days
  • Average Daily Revenue: $5,000.00
  • Estimated AR Balance: $120,000 (Matches input)

Financial Interpretation: Precision Parts Inc. has a DSO of 24 days. This is generally considered quite good, especially for a manufacturing business where payment terms might be net 30 or net 60. It indicates efficient collections and aligns well with industry standards. This healthy DSO means cash is flowing back into the business relatively quickly, supporting operations and reducing the need for external financing. This reflects effective management of their accounts receivable balance.

How to Use This {primary_keyword} Calculator

Our free online calculator is designed for simplicity and accuracy, helping you quickly assess your company’s collection performance and understand your accounts receivable balance using DSO. Follow these steps for best results:

  1. Gather Your Data: Before using the calculator, collect the necessary financial information for the period you wish to analyze (e.g., last quarter, last year). You will need:
    • Average Accounts Receivable: Calculate this by summing the AR balances at the beginning and end of your chosen period and dividing by two. For more accuracy, average monthly balances if available.
    • Net Sales: This is your total revenue after deducting returns, allowances, and discounts for the same period.
    • Number of Days in Period: Enter 365 for an annual analysis, 90 (or 91) for quarterly, or the specific number of days if analyzing a different timeframe.
  2. Input Values: Enter the gathered figures into the corresponding fields on the calculator: “Average Accounts Receivable,” “Net Sales,” and “Number of Days in Period.” Ensure you enter numerical values only.
  3. Calculate: Click the “Calculate” button. The calculator will instantly process your inputs.
  4. Interpret the Results: You will see several key outputs:
    • Primary Result (Average Daily Revenue): This shows your average revenue generated per day, a fundamental measure of sales activity.
    • Calculated DSO: This is the main metric, indicating the average number of days it takes to collect payment. Compare this to your standard payment terms and industry benchmarks (refer to the DSO Benchmarks Table).
    • Estimated AR Balance: This provides an estimate of your total outstanding receivables based on your DSO and daily revenue.
  5. Analyze and Decide: Use the calculated DSO to evaluate your company’s credit and collection policies. A high DSO might prompt a review of credit terms, customer screening, or collection procedures. A low DSO might indicate overly strict terms, potentially hindering sales.
  6. Reset or Copy: Use the “Reset” button to clear the fields and perform a new calculation. Use the “Copy Results” button to easily transfer the calculated figures (DSO, Avg Daily Revenue, Estimated AR Balance) for reporting or further analysis.

By consistently using this tool, you can monitor trends in your accounts receivable balance and proactively manage your company’s cash flow.

Key Factors That Affect {primary_keyword} Results

Several factors influence the Days Sales Outstanding (DSO) calculation and, consequently, the perceived accounts receivable balance. Understanding these is crucial for accurate interpretation and effective management:

  1. Payment Terms Offered: The credit terms you extend to customers are the most direct influence. Offering Net 30 terms will naturally result in a different DSO than Net 60 or Net 90 terms. If your standard terms are Net 30, a DSO significantly higher than 30 suggests collection issues.
  2. Industry Benchmarks: Different industries have vastly different typical payment cycles. A software company selling subscriptions might expect faster payments than a heavy equipment manufacturer delivering complex machinery. Comparing your DSO to relevant industry averages (like those in the DSO Benchmarks Table) provides critical context.
  3. Economic Conditions: During economic downturns, customers may delay payments, leading to an increase in DSO. Conversely, strong economic growth might see faster collections. Inflation can also impact payment behavior as businesses conserve cash.
  4. Credit Policies and Customer Screening: A company with lenient credit policies or inadequate screening processes might attract customers who are more likely to pay late, increasing DSO. Stricter screening can help mitigate this risk but may also limit sales opportunities.
  5. Collection Effectiveness: The efficiency of your accounts receivable department plays a huge role. Prompt invoicing, regular follow-ups on overdue accounts, and effective dunning processes can significantly lower DSO. Ineffective collections lead directly to a higher accounts receivable balance.
  6. Sales Volume and Growth: Rapid sales growth, especially if financed through credit, can sometimes temporarily increase DSO as the company struggles to keep up with the increased volume of receivables. Conversely, a sharp drop in sales might artificially lower DSO if outstanding receivables aren’t decreasing proportionally.
  7. Payment Methods Accepted: Offering a variety of convenient payment methods (online portals, credit cards, ACH) can speed up collections compared to relying solely on traditional check payments.
  8. Dispute Resolution Process: Delays in resolving customer disputes over invoices can halt payment and artificially inflate the DSO. An efficient process for handling and resolving such issues is vital.

Frequently Asked Questions (FAQ)

Q1: Is a low DSO always good?

A: Not necessarily. While a high DSO indicates potential cash flow issues, an extremely low DSO might suggest you are being too restrictive with credit terms, potentially losing sales opportunities. The ideal DSO aligns with your industry norms and business strategy.

Q2: How often should I calculate my DSO?

A: It’s best to calculate DSO at least quarterly to monitor trends. For businesses with high transaction volumes or volatile sales, monthly calculations might be more appropriate. Regularly updating your accounts receivable balance using DSO is key.

Q3: What is considered a “good” DSO?

A: A “good” DSO varies significantly by industry. Generally, a DSO below 45 days is considered strong for many industries, while sub-30 days is excellent. Refer to the DSO Benchmarks Table and industry-specific reports for context.

Q4: How does DSO affect my cash flow?

A: DSO directly impacts cash flow. A higher DSO means cash is tied up in receivables for longer periods, reducing liquidity. A lower DSO means cash is collected faster, improving working capital and financial flexibility.

Q5: Can seasonality affect my DSO?

A: Yes. If your sales peak during certain seasons, your DSO might fluctuate. For example, a business with high holiday sales might see a temporary dip in DSO if collections follow quickly, or an increase if end-of-year payments are delayed.

Q6: What if my Net Sales are zero or negative?

A: If Net Sales are zero or negative, the DSO formula cannot be meaningfully calculated. This indicates a severe issue, such as no sales or significant returns/cancellations, and requires immediate business review beyond just DSO calculation.

Q7: How do I improve my DSO?

A: Strategies include tightening credit policies, offering early payment discounts, improving invoicing accuracy and timeliness, implementing proactive collection follow-ups, and simplifying payment processes.

Q8: Should I use gross or net sales in the DSO calculation?

A: Always use net sales. Gross sales don’t reflect the actual amount expected to be collected. Net sales account for discounts, returns, and allowances, providing a more accurate basis for the calculation.

© 2023 Your Company Name. All rights reserved.

// **REVISED APPROACH: Using pure Javascript for Canvas**
// This will require manually drawing elements. The Chart.js library is efficient but external.
// Let's stick to the `canvas` element as requested and avoid external libs.
// We'll need to manually draw on the canvas.

var dsoCanvasChart = null;

function drawCanvasChart(dso, averageDailyRevenue, estimatedARBalance) {
var canvas = document.getElementById('dsoChart');
var ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear previous drawing

var chartWidth = canvas.clientWidth;
var chartHeight = canvas.clientHeight;
var padding = 40; // Padding around the chart
var chartAreaWidth = chartWidth - 2 * padding;
var chartAreaHeight = chartHeight - 2 * padding;

// Simulate data for trend analysis
var simulatedPeriods = ['P1', 'P2', 'P3', 'P4', 'Current'];
var simulatedDSO = [50, 60, 75, 80, dso];
var simulatedAR = [120000, 130000, 150000, 160000, estimatedARBalance];

// Find max values for scaling
var maxDSO = Math.max(...simulatedDSO) * 1.2;
var maxAR = Math.max(...simulatedAR) * 1.2;

// Scales
var xScale = function(index) {
return padding + (index / (simulatedPeriods.length - 1)) * chartAreaWidth;
};
var yScaleDSO = function(value) {
return chartHeight - padding - (value / maxDSO) * chartAreaHeight;
};
var yScaleAR = function(value) {
// Using a separate scale for AR might be complex without a library.
// For simplicity, let's plot AR on a scaled version of the DSO axis or use a secondary axis conceptually.
// A proper dual-axis chart without a library is very involved.
// For demonstration, let's map AR to the same y-scale range, acknowledging limitations.
// A better approach would be separate canvases or a different chart type.
// Let's try to map AR relative to its own max on the same scale.
return chartHeight - padding - (value / maxAR) * chartAreaHeight;
};

// Draw Axes
ctx.strokeStyle = '#ccc';
ctx.lineWidth = 1;

// X Axis
ctx.beginPath();
ctx.moveTo(padding, chartHeight - padding);
ctx.lineTo(chartWidth - padding, chartHeight - padding);
ctx.stroke();

// Y Axis (Left - DSO)
ctx.beginPath();
ctx.moveTo(padding, padding);
ctx.lineTo(padding, chartHeight - padding);
ctx.stroke();

// Y Axis (Right - conceptually for AR) - drawing a line is simple, labeling is harder without helper functions.
ctx.beginPath();
ctx.moveTo(chartWidth - padding, padding);
ctx.lineTo(chartWidth - padding, chartHeight - padding);
ctx.stroke();

// Draw X Axis Labels
ctx.fillStyle = '#333';
ctx.font = '12px sans-serif';
ctx.textAlign = 'center';
simulatedPeriods.forEach(function(label, index) {
ctx.fillText(label, xScale(index), chartHeight - padding + 15);
});

// Draw Y Axis Labels (Left - DSO)
ctx.textAlign = 'right';
ctx.textBaseline = 'middle';
var dsoTicks = 5;
for (var i = 0; i <= dsoTicks; i++) { var value = (i / dsoTicks) * maxDSO; var yPos = yScaleDSO(value); ctx.fillText(value.toFixed(0) + ' Days', padding - 10, yPos); // Draw tick marks ctx.beginPath(); ctx.moveTo(padding - 5, yPos); ctx.lineTo(padding, yPos); ctx.stroke(); } // Draw Y Axis Labels (Right - AR) - simplified representation ctx.textAlign = 'left'; var arTicks = 5; for (var i = 0; i <= arTicks; i++) { var value = (i / arTicks) * maxAR; var yPos = yScaleAR(value); ctx.fillText(formatCurrency(value.toFixed(0)), chartWidth - padding + 10, yPos); // Draw tick marks ctx.beginPath(); ctx.moveTo(chartWidth - padding, yPos); ctx.lineTo(chartWidth - padding + 5, yPos); ctx.stroke(); } // Draw DSO Line ctx.beginPath(); ctx.strokeStyle = 'var(--primary-color)'; ctx.lineWidth = 2; simulatedDSO.forEach(function(value, index) { var x = xScale(index); var y = yScaleDSO(value); if (index === 0) { ctx.moveTo(x, y); } else { ctx.lineTo(x, y); } }); ctx.stroke(); // Draw AR Line (mapped to the same scale height for simplicity) ctx.beginPath(); ctx.strokeStyle = 'var(--success-color)'; ctx.lineWidth = 2; simulatedAR.forEach(function(value, index) { var x = xScale(index); // For AR, we might need to scale it differently if the ranges are vastly different. // Here, we reuse the height mapping, which might compress AR significantly if maxAR is much larger than maxDSO. // A true dual-axis chart requires careful scaling or separate canvases. var y = yScaleAR(value); // Using AR's specific scale function if (index === 0) { ctx.moveTo(x, y); } else { ctx.lineTo(x, y); } }); ctx.stroke(); // Add Data Points and Tooltips (Very basic implementation) var tooltip = { x: 0, y: 0, text: "", visible: false }; function showTooltip(event, dataIndex) { var xPos = xScale(dataIndex); var dsoY = yScaleDSO(simulatedDSO[dataIndex]); var arY = yScaleAR(simulatedAR[dataIndex]); // Use AR scale y position tooltip.x = event.offsetX; // Use mouse position tooltip.y = event.offsetY; tooltip.text = "Period: " + simulatedPeriods[dataIndex] + "\n" + "DSO: " + simulatedDSO[dataIndex].toFixed(2) + " Days\n" + "AR: " + formatCurrency(simulatedAR[dataIndex].toFixed(2)); tooltip.visible = true; // Draw dots ctx.fillStyle = 'var(--primary-color)'; ctx.beginPath(); ctx.arc(xPos, dsoY, 5, 0, Math.PI * 2); ctx.fill(); ctx.fillStyle = 'var(--success-color)'; ctx.beginPath(); ctx.arc(xPos, arY, 5, 0, Math.PI * 2); // Draw AR dot ctx.fill(); } function hideTooltip() { tooltip.visible = false; } canvas.onmousemove = function(e) { var rect = canvas.getBoundingClientRect(); var mouseX = e.clientX - rect.left; var mouseY = e.clientY - rect.top; var hoverTolerance = 10; // Pixels to consider hovering over a point var closestIndex = -1; var minDist = Infinity; simulatedPeriods.forEach(function(p, index) { var xPos = xScale(index); var dsoY = yScaleDSO(simulatedDSO[index]); var arY = yScaleAR(simulatedAR[index]); // Check distance to DSO point var distDSO = Math.sqrt(Math.pow(mouseX - xPos, 2) + Math.pow(mouseY - dsoY, 2)); if (distDSO < minDist) { minDist = distDSO; closestIndex = index; } // Check distance to AR point var distAR = Math.sqrt(Math.pow(mouseX - xPos, 2) + Math.pow(mouseY - arY, 2)); if (distAR < minDist) { minDist = distAR; closestIndex = index; } }); if (minDist < hoverTolerance && closestIndex !== -1) { showTooltip(e, closestIndex); } else { hideTooltip(); } // Redraw chart to show tooltips and points drawCanvasChart(dso, averageDailyRevenue, estimatedARBalance); // Redraw needed to update tooltip visibility/position if (tooltip.visible) { ctx.fillStyle = 'rgba(0, 0, 0, 0.8)'; ctx.fillRect(tooltip.x + 5, tooltip.y - 20, ctx.measureText(tooltip.text.split('\n')[0]).width + 10, tooltip.text.split('\n').length * 15); // Background rect ctx.fillStyle = 'white'; tooltip.text.split('\n').forEach(function(line, i) { ctx.fillText(line, tooltip.x + 10, tooltip.y - 10 + i * 15); }); } }; canvas.onmouseleave = function() { hideTooltip(); drawCanvasChart(dso, averageDailyRevenue, estimatedARBalance); // Redraw to clear tooltip }; } // Update the initial call and calculation function to use the canvas drawing document.addEventListener('DOMContentLoaded', function() { // Set default values document.getElementById('averageAccountsReceivable').value = '500000'; document.getElementById('netSales').value = '1500000'; document.getElementById('periodDays').value = '365'; calculateBalance(); // Perform initial calculation // Initial canvas chart setup - call drawCanvasChart with initial calculated values var initialAvgAR = parseFloat(document.getElementById('averageAccountsReceivable').value); var initialNetSales = parseFloat(document.getElementById('netSales').value); var initialPeriodDays = parseFloat(document.getElementById('periodDays').value); var initialAvgDailyRev = (initialNetSales > 0 && initialPeriodDays > 0) ? initialNetSales / initialPeriodDays : 0;
var initialDSO = (initialNetSales > 0 && initialPeriodDays > 0) ? (initialAvgAR / initialNetSales) * initialPeriodDays : 0;
var initialEstARBalance = initialAvgDailyRev * initialDSO;

drawCanvasChart(initialDSO, initialAvgDailyRev, initialEstARBalance);
});

// Modify calculateBalance to call drawCanvasChart
function calculateBalance() {
var isValidAvgAR = validateInput('averageAccountsReceivable', 'avgARError', 0);
var isValidNetSales = validateInput('netSales', 'netSalesError', 0);
var isValidPeriodDays = validateInput('periodDays', 'periodDaysError', 1);

if (!isValidAvgAR || !isValidNetSales || !isValidPeriodDays) {
document.getElementById('primaryResult').textContent = '--';
document.getElementById('calculatedDSO').textContent = '--';
document.getElementById('revenuePerDay').textContent = '--';
document.getElementById('estimatedBalance').textContent = '--';
drawCanvasChart(0, 0, 0); // Clear chart on invalid input
return;
}

var averageAccountsReceivable = parseFloat(document.getElementById('averageAccountsReceivable').value);
var netSales = parseFloat(document.getElementById('netSales').value);
var periodDays = parseFloat(document.getElementById('periodDays').value);

var dso = 0;
var averageDailyRevenue = 0;
var estimatedARBalance = 0;

if (netSales > 0 && periodDays > 0) {
averageDailyRevenue = netSales / periodDays;
if (averageAccountsReceivable >= 0) {
dso = (averageAccountsReceivable / netSales) * periodDays;
estimatedARBalance = averageDailyRevenue * dso;
} else {
dso = 0;
estimatedARBalance = 0;
}
} else {
dso = 0;
averageDailyRevenue = 0;
estimatedARBalance = 0;
}

document.getElementById('primaryResult').textContent = formatCurrency(averageDailyRevenue.toFixed(2));
document.getElementById('calculatedDSO').textContent = dso.toFixed(2) + ' Days';
document.getElementById('revenuePerDay').textContent = formatCurrency(averageDailyRevenue.toFixed(2));
document.getElementById('estimatedBalance').textContent = formatCurrency(estimatedARBalance.toFixed(2));

// Call the canvas drawing function
drawCanvasChart(dso, averageDailyRevenue, estimatedARBalance);
}


Leave a Reply

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