{"id":17036,"date":"2025-03-01T11:04:00","date_gmt":"2025-03-01T16:04:00","guid":{"rendered":"https:\/\/www.comcapfactoring.com\/au\/?p=17036"},"modified":"2026-06-06T08:21:16","modified_gmt":"2026-06-06T12:21:16","slug":"dpo-calculator","status":"publish","type":"post","link":"https:\/\/www.comcapfactoring.com\/au\/blog\/dpo-calculator\/","title":{"rendered":"Creditor Days Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Creditor days, also known as days payable outstanding (DPO), measures how long your business takes to pay its suppliers, on average. It\u2019s an important metric because it provides a general gauge of how your business manages supplier payments and cash flow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An increasing creditor days figure may indicate that your business is taking longer to pay its bills. This can improve short-term cash flow. However, it could also signal payment delays or supplier pressure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Formula:<\/strong> Creditor Days = (Average Trade Creditors \u00f7 Cost of Goods Sold) \u00d7 Number of Days in Period<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How to use the calculator<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Enter the following information to calculate your creditor days:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Average Trade Creditors:<\/strong> Use trade creditors from the balance sheet. Add trade creditors at the beginning and end of the period, then divide by two.<\/li>\n\n\n\n<li><strong>Cost of Goods Sold: <\/strong>Use cost of goods sold from the income statement for the same period.<\/li>\n\n\n\n<li><strong>Number of Days in the Period:<\/strong> Typically a month, quarter, or year.<\/li>\n<\/ul>\n\n\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/d3@7\"><\/script>\n\n<figure class=\"wp-block-table post-table post-table-bold-column cc-creditor-days-calculator\" id=\"cc-creditor-days-calculator\">\n  <table>\n    <tbody>\n      <tr>\n        <td>Average Trade Creditors<\/td>\n        <td>\n          <span class=\"cc-creditor-days-value-wrap\">\n            <span class=\"cc-creditor-days-symbol\">A$<\/span>\n            <input type=\"text\" inputmode=\"decimal\" value=\"150,000\" id=\"cc-creditor-days-average-creditors\" data-cc-creditor-days-input data-cc-format=\"money\">\n          <\/span>\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td>Cost of Goods Sold<\/td>\n        <td>\n          <span class=\"cc-creditor-days-value-wrap\">\n            <span class=\"cc-creditor-days-symbol\">A$<\/span>\n            <input type=\"text\" inputmode=\"decimal\" value=\"1,200,000\" id=\"cc-creditor-days-cogs\" data-cc-creditor-days-input data-cc-format=\"money\">\n          <\/span>\n        <\/td>\n      <\/tr>\n\n      <tr>\n        <td>Number of Days in Period<\/td>\n        <td>\n          <span class=\"cc-creditor-days-value-wrap\">\n            <span class=\"cc-creditor-days-symbol\"><\/span>\n            <input type=\"text\" inputmode=\"decimal\" value=\"365\" id=\"cc-creditor-days-period\" data-cc-creditor-days-input data-cc-format=\"number\">\n          <\/span>\n        <\/td>\n      <\/tr>\n    <\/tbody>\n\n    <tfoot>\n      <tr>\n        <td class=\"cc-creditor-days-result-label\">Creditor Days<\/td>\n        <td class=\"cc-creditor-days-result-value\">\n          <span class=\"cc-creditor-days-value-wrap\">\n            <span class=\"cc-creditor-days-symbol\"><\/span>\n            <span class=\"cc-creditor-days-calculated-value\" id=\"cc-creditor-days-result\">45.6 days<\/span>\n          <\/span>\n        <\/td>\n      <\/tr>\n    <\/tfoot>\n  <\/table>\n<\/figure>\n\n<div class=\"cc-creditor-days-gauge-card\">\n  <div class=\"cc-creditor-days-gauge-title\">Creditor Days Range<\/div>\n  <div id=\"cc-creditor-days-gauge-bar\"><\/div>\n<\/div>\n\n<style>\n  \/*\n    Creditor Days Calculator\n    Two-column table on desktop and mobile.\n    Hardened for Australia pages.\n  *\/\n\n  .entry-content .cc-creditor-days-calculator {\n    width: 100%;\n    max-width: 100%;\n    box-sizing: border-box;\n    overflow-x: hidden;\n  }\n\n  .entry-content .cc-creditor-days-calculator table {\n    width: 100%;\n    max-width: 100%;\n    table-layout: fixed;\n  }\n\n  .entry-content .cc-creditor-days-calculator table td {\n    box-sizing: border-box;\n    vertical-align: middle;\n  }\n\n  .entry-content .cc-creditor-days-calculator table td:first-child {\n    width: 58%;\n    text-align: left !important;\n    white-space: normal;\n    overflow-wrap: break-word;\n    word-break: normal;\n  }\n\n  .entry-content .cc-creditor-days-calculator table td:last-child {\n    width: 42%;\n    text-align: right !important;\n    white-space: nowrap;\n  }\n\n  .entry-content .cc-creditor-days-calculator .cc-creditor-days-value-wrap {\n    display: inline-grid;\n    grid-template-columns: 1.75em 7em;\n    align-items: center;\n    justify-content: end !important;\n    column-gap: 2px;\n    white-space: nowrap;\n    max-width: 100%;\n    vertical-align: middle;\n  }\n\n  .entry-content .cc-creditor-days-calculator .cc-creditor-days-symbol {\n    text-align: right !important;\n    min-width: 0;\n    font-variant-numeric: tabular-nums;\n  }\n\n  .entry-content .cc-creditor-days-calculator .cc-creditor-days-calculated-value {\n    display: inline-block;\n    width: 7em;\n    text-align: right !important;\n    font-variant-numeric: tabular-nums;\n  }\n\n  .entry-content .cc-creditor-days-calculator .cc-creditor-days-result-label,\n  .entry-content .cc-creditor-days-calculator .cc-creditor-days-result-value {\n    font-weight: 700;\n  }\n\n  .entry-content .cc-creditor-days-calculator input[data-cc-creditor-days-input] {\n    box-sizing: border-box;\n    width: 7em;\n    min-width: 7em;\n    max-width: 7em;\n    padding: 2px 4px;\n    border: 1px solid #999;\n    border-radius: 2px;\n    background: #fff;\n    color: inherit;\n    font: inherit;\n    font-weight: inherit;\n    line-height: inherit;\n    text-align: right !important;\n    outline: none;\n    font-variant-numeric: tabular-nums;\n  }\n\n  .entry-content .cc-creditor-days-calculator input[data-cc-creditor-days-input]:focus {\n    border-color: #ef621e;\n    box-shadow: 0 0 0 1px #ef621e;\n  }\n\n  .cc-creditor-days-gauge-card {\n    width: 100%;\n    max-width: 100%;\n    box-sizing: border-box;\n    background: #f2f2f2;\n    padding: 18px;\n    margin: 0 0 40px;\n    text-align: center;\n    overflow: hidden;\n  }\n\n  .cc-creditor-days-gauge-title {\n    color: #0a3c70;\n    font-size: 18px;\n    font-weight: 700;\n    margin-bottom: 6px;\n  }\n\n  #cc-creditor-days-gauge-bar {\n    width: 100%;\n    max-width: 100%;\n    overflow: hidden;\n  }\n\n  .cc-creditor-days-gauge-card svg {\n    display: block;\n    width: 100%;\n    max-width: 420px;\n    height: auto;\n    margin: 0 auto;\n  }\n\n  @media (max-width: 760px) {\n    .entry-content .cc-creditor-days-calculator table td {\n      font-size: 14px;\n      line-height: 1.25;\n      padding-left: 8px;\n      padding-right: 8px;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:first-child {\n      width: 54%;\n      text-align: left !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:last-child {\n      width: 46%;\n      text-align: right !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-value-wrap {\n      grid-template-columns: 1.45em 6.25em;\n      justify-content: end !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator input[data-cc-creditor-days-input],\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-calculated-value {\n      width: 6.25em;\n      min-width: 6.25em;\n      max-width: 6.25em;\n      font-size: 14px;\n      text-align: right !important;\n    }\n\n    .cc-creditor-days-gauge-card {\n      padding: 12px 6px;\n    }\n\n    .cc-creditor-days-gauge-title {\n      font-size: 16px;\n      margin-bottom: 2px;\n    }\n  }\n\n  @media (max-width: 520px) {\n    .entry-content .cc-creditor-days-calculator table td {\n      font-size: 13px;\n      line-height: 1.22;\n      padding-left: 6px;\n      padding-right: 6px;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:first-child {\n      width: 52%;\n      text-align: left !important;\n      word-break: normal !important;\n      overflow-wrap: break-word;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:last-child {\n      width: 48%;\n      text-align: right !important;\n      word-break: normal !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-value-wrap {\n      grid-template-columns: 1.35em 5.95em;\n      justify-content: end !important;\n      column-gap: 1px;\n    }\n\n    .entry-content .cc-creditor-days-calculator input[data-cc-creditor-days-input],\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-calculated-value {\n      width: 5.95em;\n      min-width: 5.95em;\n      max-width: 5.95em;\n      font-size: 13px;\n      padding-left: 3px;\n      padding-right: 3px;\n      text-align: right !important;\n    }\n  }\n\n  \/*\n    This block specifically overrides narrow mobile table rules\n    that may force table cells left-aligned.\n  *\/\n  @media (max-width: 469px) {\n    .entry-content .cc-creditor-days-calculator table td:first-child {\n      text-align: left !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:last-child {\n      text-align: right !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-value-wrap {\n      justify-content: end !important;\n      text-align: right !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-symbol {\n      text-align: right !important;\n    }\n\n    .entry-content .cc-creditor-days-calculator input[data-cc-creditor-days-input],\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-calculated-value {\n      text-align: right !important;\n    }\n  }\n\n  @media (max-width: 390px) {\n    .entry-content .cc-creditor-days-calculator table td {\n      font-size: 12.5px;\n      padding-left: 5px;\n      padding-right: 5px;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:first-child {\n      width: 50%;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:last-child {\n      width: 50%;\n    }\n\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-value-wrap {\n      grid-template-columns: 1.25em 5.65em;\n    }\n\n    .entry-content .cc-creditor-days-calculator input[data-cc-creditor-days-input],\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-calculated-value {\n      width: 5.65em;\n      min-width: 5.65em;\n      max-width: 5.65em;\n      font-size: 12.5px;\n    }\n  }\n\n  @media (max-width: 350px) {\n    .entry-content .cc-creditor-days-calculator table td {\n      font-size: 12px;\n      padding-left: 4px;\n      padding-right: 4px;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:first-child {\n      width: 48%;\n    }\n\n    .entry-content .cc-creditor-days-calculator table td:last-child {\n      width: 52%;\n    }\n\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-value-wrap {\n      grid-template-columns: 1.15em 5.25em;\n    }\n\n    .entry-content .cc-creditor-days-calculator input[data-cc-creditor-days-input],\n    .entry-content .cc-creditor-days-calculator .cc-creditor-days-calculated-value {\n      width: 5.25em;\n      min-width: 5.25em;\n      max-width: 5.25em;\n      font-size: 12px;\n    }\n  }\n<\/style>\n\n<script>\n  (function () {\n    const calculator = document.getElementById('cc-creditor-days-calculator');\n    if (!calculator || typeof d3 === 'undefined') return;\n\n    const averageCreditorsInput = calculator.querySelector('#cc-creditor-days-average-creditors');\n    const cogsInput = calculator.querySelector('#cc-creditor-days-cogs');\n    const daysPeriodInput = calculator.querySelector('#cc-creditor-days-period');\n    const creditorDaysResult = calculator.querySelector('#cc-creditor-days-result');\n\n    const maxCreditorDays = 180;\n\n    function getNumberFromValue(value) {\n      const rawValue = String(value)\n        .replace(\/AUD\/gi, '')\n        .replace(\/A\\$\/gi, '')\n        .replace(\/\\$\/g, '')\n        .replace(\/A\/gi, '')\n        .replace(\/,\/g, '')\n        .trim();\n\n      const parsedValue = parseFloat(rawValue);\n      return Number.isFinite(parsedValue) ? parsedValue : 0;\n    }\n\n    function getNumber(input) {\n      return getNumberFromValue(input.value);\n    }\n\n    function formatWholeNumber(value) {\n      return Math.round(value).toLocaleString('en-AU');\n    }\n\n    function formatCreditorDays(value) {\n      return value.toLocaleString('en-AU', {\n        minimumFractionDigits: 1,\n        maximumFractionDigits: 1\n      });\n    }\n\n    function formatMoneyInput(input) {\n      input.value = formatWholeNumber(getNumber(input));\n    }\n\n    function formatNumberInput(input) {\n      input.value = formatWholeNumber(getNumber(input));\n    }\n\n    function clamp(value, min, max) {\n      return Math.max(min, Math.min(max, value));\n    }\n\n    function calculateCreditorDays() {\n      const averageCreditors = getNumber(averageCreditorsInput);\n      const cogs = getNumber(cogsInput);\n      const daysPeriod = getNumber(daysPeriodInput);\n\n      const creditorDays = cogs > 0 ? (averageCreditors \/ cogs) * daysPeriod : 0;\n\n      creditorDaysResult.textContent = formatCreditorDays(creditorDays) + ' days';\n      drawBarGauge(creditorDays);\n    }\n\n    function drawBarGauge(value) {\n      d3.select('#cc-creditor-days-gauge-bar').selectAll('*').remove();\n\n      const width = 420;\n      const height = 100;\n      const safeValue = clamp(value, 0, maxCreditorDays);\n\n      const barY = 40;\n      const barHeight = 18;\n      const barRadius = 9;\n\n      const svg = d3.select('#cc-creditor-days-gauge-bar')\n        .append('svg')\n        .attr('viewBox', `0 0 ${width} ${height}`)\n        .attr('role', 'img')\n        .attr('aria-label', 'Creditor days range gauge');\n\n      const x = d3.scaleLinear()\n        .domain([0, maxCreditorDays])\n        .range([32, width - 32]);\n\n      const barStart = x(0);\n      const barEnd = x(maxCreditorDays);\n      const barWidth = barEnd - barStart;\n      const markerX = x(safeValue);\n\n      const clipId = 'cc-creditor-days-bar-clip-' + Math.random().toString(36).slice(2);\n\n      svg.append('defs')\n        .append('clipPath')\n        .attr('id', clipId)\n        .append('rect')\n        .attr('x', barStart)\n        .attr('y', barY)\n        .attr('width', barWidth)\n        .attr('height', barHeight)\n        .attr('rx', barRadius)\n        .attr('ry', barRadius);\n\n      const barGroup = svg.append('g')\n        .attr('clip-path', 'url(#' + clipId + ')');\n\n      barGroup.append('rect')\n        .attr('x', x(0))\n        .attr('y', barY)\n        .attr('width', x(60) - x(0))\n        .attr('height', barHeight)\n        .attr('fill', '#4caf50');\n\n      barGroup.append('rect')\n        .attr('x', x(60))\n        .attr('y', barY)\n        .attr('width', x(90) - x(60))\n        .attr('height', barHeight)\n        .attr('fill', '#f4b400');\n\n      barGroup.append('rect')\n        .attr('x', x(90))\n        .attr('y', barY)\n        .attr('width', x(180) - x(90))\n        .attr('height', barHeight)\n        .attr('fill', '#f72f35');\n\n      svg.append('rect')\n        .attr('x', barStart)\n        .attr('y', barY)\n        .attr('width', barWidth)\n        .attr('height', barHeight)\n        .attr('rx', barRadius)\n        .attr('ry', barRadius)\n        .attr('fill', 'none')\n        .attr('stroke', '#b7b7b7')\n        .attr('stroke-width', 1);\n\n      [60, 90].forEach(function (tick) {\n        svg.append('line')\n          .attr('x1', x(tick))\n          .attr('x2', x(tick))\n          .attr('y1', barY + barHeight)\n          .attr('y2', barY + barHeight + 6)\n          .attr('stroke', '#0a3c70')\n          .attr('stroke-width', 2);\n      });\n\n      svg.append('circle')\n        .attr('cx', markerX)\n        .attr('cy', barY + (barHeight \/ 2))\n        .attr('r', 10)\n        .attr('fill', '#0a3c70')\n        .attr('stroke', '#ffffff')\n        .attr('stroke-width', 2);\n\n      svg.append('text')\n        .attr('x', width \/ 2)\n        .attr('y', 26)\n        .attr('text-anchor', 'middle')\n        .attr('font-size', '22')\n        .attr('font-weight', '700')\n        .attr('fill', '#0a3c70')\n        .text(formatCreditorDays(value) + ' days');\n\n      [0, 60, 90, 180].forEach(function (tick) {\n        svg.append('text')\n          .attr('x', x(tick))\n          .attr('y', 77)\n          .attr('text-anchor', 'middle')\n          .attr('font-size', '12')\n          .attr('fill', '#333')\n          .text(tick === 180 ? '180+' : tick);\n      });\n    }\n\n    calculator.querySelectorAll('[data-cc-creditor-days-input]').forEach(function (input) {\n      input.addEventListener('input', calculateCreditorDays);\n\n      input.addEventListener('blur', function () {\n        if (input.value.trim() === '') {\n          input.value = '0';\n        }\n\n        if (input.dataset.ccFormat === 'money') {\n          formatMoneyInput(input);\n        }\n\n        if (input.dataset.ccFormat === 'number') {\n          formatNumberInput(input);\n        }\n\n        calculateCreditorDays();\n      });\n    });\n\n    calculator.querySelectorAll('[data-cc-format=\"money\"]').forEach(formatMoneyInput);\n    calculator.querySelectorAll('[data-cc-format=\"number\"]').forEach(formatNumberInput);\n\n    calculateCreditorDays();\n\n    window.addEventListener('resize', calculateCreditorDays);\n  })();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\">Creditor days should be evaluated in context. Higher creditor days can help preserve cash and may improve your <a href=\"https:\/\/www.comcapfactoring.com\/au\/blog\/ccc-calculator\/\">cash conversion cycle<\/a>. However, higher creditor days should also be balanced against supplier payment terms, early-payment discounts, and vendor relationships. The goal is to manage payments in a way that supports cash flow without creating supplier pressure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note: <\/strong>This calculator is for educational purposes only and not intended as financial advice. Please consult a professional if you require financial advice.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Get more information<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We are a leading invoice financing company and can provide high advances at competitive rates. For more information, fill out our&nbsp;<a href=\"https:\/\/www.comcapfactoring.com\/au\/instant-quote\/\">enquiry form<\/a>&nbsp;and a representative will contact you soon.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Creditor days, also known as days payable outstanding (DPO), measures how long your business takes to pay its suppliers, on average. It\u2019s an important metric because it provides a general gauge of how your business manages supplier payments and cash flow. An increasing creditor days figure may indicate that your business is taking longer to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":17043,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","wds_primary_category":0,"footnotes":""},"categories":[125],"tags":[],"class_list":["post-17036","post","type-post","status-publish","format-standard","has-post-thumbnail","category-calculators","entry"],"acf":[],"taxonomy_info":{"category":[{"value":125,"label":"Business Calculators"}]},"featured_image_src_large":["https:\/\/www.comcapfactoring.com\/au\/wp-content\/uploads\/sites\/3\/2026\/06\/credit-days-calculator-1024x713.webp",1024,713,true],"author_info":{"display_name":"Marco Terry","author_link":"https:\/\/www.comcapfactoring.com\/au\/blog\/author\/marcoterry\/"},"comment_info":0,"category_info":[{"term_id":125,"name":"Business Calculators","slug":"calculators","term_group":0,"term_taxonomy_id":125,"taxonomy":"category","description":"This category contains several online (interactive) business calculators. ","parent":0,"count":4,"filter":"raw","meta":[],"cat_ID":125,"category_count":4,"category_description":"This category contains several online (interactive) business calculators. ","cat_name":"Business Calculators","category_nicename":"calculators","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/posts\/17036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/comments?post=17036"}],"version-history":[{"count":6,"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/posts\/17036\/revisions"}],"predecessor-version":[{"id":17042,"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/posts\/17036\/revisions\/17042"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/media\/17043"}],"wp:attachment":[{"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/media?parent=17036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/categories?post=17036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comcapfactoring.com\/au\/wp-json\/wp\/v2\/tags?post=17036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}