Retail

Retail Profitability

:root{–orange:#C75B22;–orange-bright:#E2761A;–orange-faint:rgba(199,91,34,0.10);–red:#D11F4B;–green:#1C7A57;–ink:#1A1714;–ink-2:#4A4138;–muted:#756859;–muted-2:#9A8E7E;–paper:#F3EEE4;–paper-2:#EDE6D8;–surface:#FBF9F3;–line:#DCD3C2;–line-2:#C9BEAA;–night:#1A1714;–night-2:#211D17;–night-line:rgba(255,255,255,0.12);}.cnp-redesign .serif{font-family:’Newsreader’,Georgia,serif;font-weight:400;}.cnp-redesign .mono{font-family:’IBM Plex Mono’,ui-monospace,monospace;}.cnp-redesign a{color:var(–ink);text-decoration:none;}.cnp-redesign a:hover{color:var(–orange);}.cnp-redesign .wrap{max-width:1240px;margin:0 auto;padding:0 40px;}.cnp-redesign .wrap-narrow{max-width:940px;margin:0 auto;padding:0 40px;}@media (max-width:740px){.cnp-redesign .wrap,.cnp-redesign .wrap-narrow{padding:0 22px;}}.cnp-redesign h1,.cnp-redesign h2,.cnp-redesign h3,.cnp-redesign h4{font-family:’Newsreader’,Georgia,serif;font-weight:400;color:var(–ink);letter-spacing:-0.018em;margin:0;text-wrap:balance;}.cnp-redesign h1{font-size:clamp(40px,5vw,68px);line-height:1.04;letter-spacing:-0.022em;}.cnp-redesign h2{font-size:clamp(30px,3.6vw,46px);line-height:1.12;}.cnp-redesign h3{font-size:clamp(22px,2.2vw,28px);line-height:1.2;font-weight:500;}.cnp-redesign h1 em,.cnp-redesign h2 em,.cnp-redesign h3 em{font-style:italic;color:var(–orange);}.cnp-redesign p{margin:0;}.cnp-redesign p + p{margin-top:1.1em;}.cnp-redesign .eyebrow{display:inline-flex;align-items:center;gap:12px;font-family:’IBM Plex Mono’,monospace;font-size:12px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;color:var(–muted);}.cnp-redesign .eyebrow::before{content:”;width:26px;height:1px;background:var(–orange);}.cnp-redesign .eyebrow.dark{color:rgba(255,255,255,0.55);}.cnp-redesign .section{padding:96px 0;}.cnp-redesign .section-dark{background:var(–night);color:rgba(255,255,255,0.86);}.cnp-redesign .section-dark h2,.cnp-redesign .section-dark h3{color:#fff;}.cnp-redesign .section-paper-2{background:var(–paper-2);}@media (max-width:740px){.cnp-redesign .section{padding:64px 0;}}.cnp-redesign .lede{font-size:19px;line-height:1.62;color:var(–ink-2);max-width:62ch;}.cnp-redesign .section-head{margin-bottom:56px;}.cnp-redesign .section-head h2{margin-top:18px;max-width:24ch;}.cnp-redesign .section-head […]

:root{–orange:#C75B22;–orange-bright:#E2761A;–orange-faint:rgba(199,91,34,0.10);–red:#D11F4B;–green:#1C7A57;–ink:#1A1714;–ink-2:#4A4138;–muted:#756859;–muted-2:#9A8E7E;–paper:#F3EEE4;–paper-2:#EDE6D8;–surface:#FBF9F3;–line:#DCD3C2;–line-2:#C9BEAA;–night:#1A1714;–night-2:#211D17;–night-line:rgba(255,255,255,0.12);}.cnp-redesign .serif{font-family:’Newsreader’,Georgia,serif;font-weight:400;}.cnp-redesign .mono{font-family:’IBM Plex Mono’,ui-monospace,monospace;}.cnp-redesign a{color:var(–ink);text-decoration:none;}.cnp-redesign a:hover{color:var(–orange);}.cnp-redesign .wrap{max-width:1240px;margin:0 auto;padding:0 40px;}.cnp-redesign .wrap-narrow{max-width:940px;margin:0 auto;padding:0 40px;}@media (max-width:740px){.cnp-redesign .wrap,.cnp-redesign .wrap-narrow{padding:0 22px;}}.cnp-redesign h1,.cnp-redesign h2,.cnp-redesign h3,.cnp-redesign h4{font-family:’Newsreader’,Georgia,serif;font-weight:400;color:var(–ink);letter-spacing:-0.018em;margin:0;text-wrap:balance;}.cnp-redesign h1{font-size:clamp(40px,5vw,68px);line-height:1.04;letter-spacing:-0.022em;}.cnp-redesign h2{font-size:clamp(30px,3.6vw,46px);line-height:1.12;}.cnp-redesign h3{font-size:clamp(22px,2.2vw,28px);line-height:1.2;font-weight:500;}.cnp-redesign h1 em,.cnp-redesign h2 em,.cnp-redesign h3 em{font-style:italic;color:var(–orange);}.cnp-redesign p{margin:0;}.cnp-redesign p + p{margin-top:1.1em;}.cnp-redesign .eyebrow{display:inline-flex;align-items:center;gap:12px;font-family:’IBM Plex Mono’,monospace;font-size:12px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;color:var(–muted);}.cnp-redesign .eyebrow::before{content:”;width:26px;height:1px;background:var(–orange);}.cnp-redesign .eyebrow.dark{color:rgba(255,255,255,0.55);}.cnp-redesign .section{padding:96px 0;}.cnp-redesign .section-dark{background:var(–night);color:rgba(255,255,255,0.86);}.cnp-redesign .section-dark h2,.cnp-redesign .section-dark h3{color:#fff;}.cnp-redesign .section-paper-2{background:var(–paper-2);}@media (max-width:740px){.cnp-redesign .section{padding:64px 0;}}.cnp-redesign .lede{font-size:19px;line-height:1.62;color:var(–ink-2);max-width:62ch;}.cnp-redesign .section-head{margin-bottom:56px;}.cnp-redesign .section-head h2{margin-top:18px;max-width:24ch;}.cnp-redesign .section-head .sub{margin-top:16px;max-width:58ch;color:var(–muted);font-size:17px;}.cnp-redesign .btn{display:inline-flex;align-items:center;gap:10px;padding:15px 24px;font-family:’Hanken Grotesk’,sans-serif;font-size:14.5px;font-weight:600;border-radius:2px;border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .22s,color .22s,border-color .22s;}.cnp-redesign .btn-primary{background:var(–orange);color:#fff;border-color:var(–orange);}.cnp-redesign .btn-primary:hover{background:#A8481A;border-color:#A8481A;color:#fff;}.cnp-redesign .btn-ghost{background:transparent;color:var(–ink);border-color:var(–line-2);}.cnp-redesign .btn-ghost:hover{background:var(–ink);color:#fff;border-color:var(–ink);}.cnp-redesign .btn-ghost-dark{background:transparent;color:#fff;border-color:rgba(255,255,255,0.25);}.cnp-redesign .btn-ghost-dark:hover{background:#fff;color:var(–ink);border-color:#fff;}.cnp-redesign .dim-hero{padding:84px 0 92px;border-bottom:1px solid var(–line);}.cnp-redesign .dim-hero .grid{display:grid;grid-template-columns:1.15fr 0.85fr;gap:72px;align-items:center;}.cnp-redesign .dim-hero h1{margin-top:26px;}.cnp-redesign .dim-hero .lede{margin-top:26px;}.cnp-redesign .dim-hero .hero-meta{margin-top:40px;display:flex;align-items:center;gap:18px;font-family:’IBM Plex Mono’,monospace;font-size:11.5px;letter-spacing:0.14em;text-transform:uppercase;color:var(–muted);}.cnp-redesign .dim-hero .hero-meta .sep{width:1px;height:13px;background:var(–line-2);}.cnp-redesign .dim-hero .fig{border:1px solid var(–line);background:var(–surface);border-radius:3px;padding:30px 30px 24px;}.cnp-redesign .dim-hero .fig .cap{margin-top:18px;display:flex;justify-content:space-between;font-family:’IBM Plex Mono’,monospace;font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;color:var(–muted-2);}@media (max-width:980px){.cnp-redesign .dim-hero .grid{grid-template-columns:1fr;gap:48px;}.cnp-redesign .dim-hero .fig{max-width:560px;}}.cnp-redesign .dim-define{display:grid;grid-template-columns:1fr 1fr;gap:72px;}.cnp-redesign .dim-define .col h2{font-size:clamp(26px,2.6vw,34px);}.cnp-redesign .dim-define .col p{margin-top:22px;}.cnp-redesign .dim-define .col .k{color:var(–ink);font-weight:600;}@media (max-width:880px){.cnp-redesign .dim-define{grid-template-columns:1fr;gap:52px;}}.cnp-redesign .maturity{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(–night-line);border-radius:3px;overflow:hidden;}.cnp-redesign .m-level{position:relative;background:var(–night-2);padding:30px 26px 34px;display:flex;flex-direction:column;}.cnp-redesign .m-level + .m-level{border-left:1px solid var(–night-line);}.cnp-redesign .m-level .m-badge{font-family:’IBM Plex Mono’,monospace;font-size:11px;font-weight:500;letter-spacing:0.16em;text-transform:uppercase;color:rgba(255,255,255,0.45);}.cnp-redesign .m-level .m-num{font-family:’IBM Plex Mono’,monospace;font-size:52px;font-weight:300;line-height:1;color:rgba(255,255,255,0.18);margin-top:18px;}.cnp-redesign .m-level .m-name{font-family:’Newsreader’,Georgia,serif;font-size:24px;color:#fff;margin-top:14px;}.cnp-redesign .m-level .m-desc{font-size:14.5px;line-height:1.6;color:rgba(255,255,255,0.6);margin-top:12px;flex:1;}.cnp-redesign .m-level .m-ticks{display:flex;gap:5px;margin-top:26px;}.cnp-redesign .m-level .m-ticks i{height:4px;flex:1;background:rgba(255,255,255,0.12);border-radius:1px;}.cnp-redesign .m-level[data-level=”1″] .m-ticks i:nth-child(-n+1),.cnp-redesign .m-level[data-level=”2″] .m-ticks i:nth-child(-n+2),.cnp-redesign .m-level[data-level=”3″] .m-ticks i:nth-child(-n+3),.cnp-redesign .m-level[data-level=”4″] .m-ticks i:nth-child(-n+4){background:var(–orange-bright);}.cnp-redesign .m-level[data-level=”4″]{background:rgba(226,118,26,0.10);}.cnp-redesign .m-level[data-level=”4″] .m-num{color:rgba(226,118,26,0.55);}.cnp-redesign .m-level[data-level=”4″] .m-badge{color:var(–orange-bright);}@media (max-width:980px){.cnp-redesign .maturity{grid-template-columns:1fr 1fr;}.cnp-redesign .m-level:nth-child(3){border-left:0;}.cnp-redesign .m-level:nth-child(n+3){border-top:1px solid var(–night-line);}}@media (max-width:560px){.cnp-redesign .maturity{grid-template-columns:1fr;}.cnp-redesign .m-level + .m-level{border-left:0;border-top:1px solid var(–night-line);}}.cnp-redesign .steps{border-top:1px solid var(–line);}.cnp-redesign .step{display:grid;grid-template-columns:150px 1fr 1.4fr;gap:40px;align-items:baseline;padding:44px 0;border-bottom:1px solid var(–line);}.cnp-redesign .step .s-num{font-family:’IBM Plex Mono’,monospace;font-size:58px;font-weight:300;line-height:1;color:var(–orange);}.cnp-redesign .step .s-title{font-family:’Newsreader’,Georgia,serif;font-size:27px;color:var(–ink);}.cnp-redesign .step .s-desc{font-size:16.5px;color:var(–ink-2);max-width:52ch;}@media (max-width:880px){.cnp-redesign .step{grid-template-columns:80px 1fr;}.cnp-redesign .step .s-num{font-size:42px;}.cnp-redesign .step .s-desc{grid-column:2;}}.cnp-redesign .compare{width:100%;border-collapse:collapse;}.cnp-redesign .compare th,.cnp-redesign .compare td{padding:22px 24px;text-align:left;}.cnp-redesign .compare thead th{font-family:’IBM Plex Mono’,monospace;font-size:11.5px;font-weight:500;letter-spacing:0.14em;text-transform:uppercase;color:var(–muted);border-bottom:1px solid var(–line-2);}.cnp-redesign .compare tbody tr{border-bottom:1px solid var(–line);}.cnp-redesign .compare tbody th{font-family:’Newsreader’,Georgia,serif;font-size:20px;font-weight:400;color:var(–ink);}.cnp-redesign .compare tbody th .note{display:block;font-family:’Hanken Grotesk’,sans-serif;font-size:13px;color:var(–muted);margin-top:3px;}.cnp-redesign .compare td{text-align:center;}.cnp-redesign .compare th:first-child{text-align:left;}.cnp-redesign .compare tr.is-hero{background:var(–surface);}.cnp-redesign .compare tr.is-hero tbody th{color:var(–ink);}.cnp-redesign .mark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;font-size:14px;font-weight:600;line-height:1;}.cnp-redesign .mark.yes{background:rgba(28,122,87,0.12);color:var(–green);}.cnp-redesign .mark.no{background:rgba(209,31,75,0.10);color:var(–red);}.cnp-redesign .mark.part{background:rgba(199,91,34,0.12);color:var(–orange);}.cnp-redesign .compare-legend{margin-top:20px;display:flex;gap:28px;flex-wrap:wrap;font-family:’IBM Plex Mono’,monospace;font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(–muted);}.cnp-redesign .compare-legend span{display:inline-flex;align-items:center;gap:8px;}.cnp-redesign .compare-wrap{overflow-x:auto;}@media (max-width:740px){.cnp-redesign .compare th,.cnp-redesign .compare td{padding:16px 12px;}.cnp-redesign .compare tbody th{font-size:17px;}}.cnp-redesign .faq-list{border-top:1px solid var(–line);}.cnp-redesign .faq-item{border-bottom:1px solid var(–line);}.cnp-redesign .faq-item summary{list-style:none;cursor:pointer;padding:28px 0;display:flex;align-items:center;justify-content:space-between;gap:30px;}.cnp-redesign .faq-item summary::-webkit-details-marker{display:none;}.cnp-redesign .faq-item .q{font-family:’Newsreader’,Georgia,serif;font-size:22px;font-weight:500;color:var(–ink);line-height:1.3;flex:1;}.cnp-redesign .faq-item .plus{width:22px;height:22px;flex:0 0 22px;position:relative;color:var(–orange);}.cnp-redesign .faq-item .plus::before,.cnp-redesign .faq-item .plus::after{content:”;position:absolute;background:currentColor;}.cnp-redesign .faq-item .plus::before{left:0;right:0;top:50%;height:1.5px;transform:translateY(-50%);}.cnp-redesign .faq-item .plus::after{top:0;bottom:0;left:50%;width:1.5px;transform:translateX(-50%);transition:transform .25s;}.cnp-redesign .faq-item[open] .plus::after{transform:translateX(-50%) scaleY(0);}.cnp-redesign .faq-item .a{padding:0 0 30px;max-width:70ch;color:var(–ink-2);}.cnp-redesign .related{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}.cnp-redesign .rel-card{display:flex;flex-direction:column;gap:30px;background:var(–surface);border:1px solid var(–line);border-radius:3px;padding:26px 26px 24px;transition:border-color .2s,transform .2s;}.cnp-redesign .rel-card:hover{border-color:var(–orange);transform:translateY(-2px);color:inherit;}.cnp-redesign .rel-card .r-idx{font-family:’IBM Plex Mono’,monospace;font-size:11px;letter-spacing:0.16em;color:var(–muted-2);}.cnp-redesign .rel-card .r-name{font-family:’Newsreader’,Georgia,serif;font-size:22px;color:var(–ink);display:flex;align-items:center;justify-content:space-between;gap:14px;}.cnp-redesign .rel-card .r-name svg{flex:0 0 auto;color:var(–orange);transition:transform .2s;}.cnp-redesign .rel-card:hover .r-name svg{transform:translateX(4px);}.cnp-redesign .rel-card.is-cta{background:var(–night);border-color:var(–night);}.cnp-redesign .rel-card.is-cta .r-idx{color:rgba(255,255,255,0.45);}.cnp-redesign .rel-card.is-cta .r-name{color:#fff;}.cnp-redesign .rel-card.is-cta .r-name svg{color:var(–orange-bright);}@media (max-width:980px){.cnp-redesign .related{grid-template-columns:1fr 1fr;}}@media (max-width:620px){.cnp-redesign .related{grid-template-columns:1fr;}}.cnp-redesign .cta-band{background:var(–night);color:#fff;position:relative;overflow:hidden;padding:110px 0;}.cnp-redesign .cta-band::before{content:”;position:absolute;top:-180px;right:-180px;width:520px;height:520px;background:radial-gradient(circle,rgba(226,118,26,0.30) 0%,rgba(226,118,26,0) 60%);pointer-events:none;}.cnp-redesign .cta-band .wrap{position:relative;z-index:2;}.cnp-redesign .cta-band h2{color:#fff;max-width:22ch;}.cnp-redesign .cta-band h2 em{color:var(–orange-bright);}.cnp-redesign .cta-band p{color:rgba(255,255,255,0.7);margin-top:22px;max-width:56ch;font-size:18px;}.cnp-redesign .cta-band .cta-row{margin-top:40px;display:flex;gap:14px;flex-wrap:wrap;}.cnp-redesign{font-family:’Hanken Grotesk’,system-ui,-apple-system,sans-serif;background:var(–paper);color:var(–ink-2);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;}.cnp-redesign *,.cnp-redesign *::before,.cnp-redesign *::after{box-sizing:border-box;}.cnp-redesign::selection{background:var(–orange);color:#fff;}.seo-body{max-width:none !important;padding:0 !important;}.seo-content{width:100% !important;max-width:none !important;}.cnp-redesign .section{padding:64px 0;}.cnp-redesign .related{grid-template-columns:repeat(3,1fr);gap:16px;align-items:stretch;}.cnp-redesign .rel-card{gap:14px;padding:24px;justify-content:flex-start;}@media (max-width:980px){.cnp-redesign .related{grid-template-columns:1fr 1fr;}}@media (max-width:620px){.cnp-redesign .related{grid-template-columns:1fr;}}.cnp-redesign .dim-hero{padding:32px 0 56px !important;}.cnp-redesign .step{padding:30px 0 !important;}.seo-hero{display:none !important;}
Retail

Find the margin behind every basket.

List price tells you almost nothing. Markdowns, returns, promotions and channel costs quietly erode the margin on every line. ABC / TDABC shows the true net margin by product, category and channel.

INDUSTRY · RETAILCOST & PROFITABILITY
LIST PRICE → NET MARGIN LIST−MARKDOWN−RETURNS−CHANNELNET
Fig. — Price to net marginTDABC
The problem

The list-price illusion.

Retailers track gross margin on list price, but the real margin is what survives markdowns, returns, shrinkage, promotions and the cost of serving each channel. Best-selling lines are often the thinnest earners once those costs are traced.

Why it matters

Range and channel decisions in the dark.

Without true net margin by SKU and channel, ranging, promotion and channel-mix decisions are guesses. You promote the wrong lines and grow the wrong channels — and the P&L never explains why.

Cost visibility maturity

How well do you see net margin?

Level 1
01
Reactive

Margin tracked on list price only. Markdowns and returns lost in aggregate.

Level 2
02
Structured

Category-level margins after markdown. Channel and returns cost still blended.

Level 3
03
Analytical

Activity-based costing of fulfilment, returns and channel. Net margin by SKU emerging.

Level 4
04
Optimised

TDABC net margin by SKU, category and channel — live for ranging and promo decisions.

How we engage

Three steps to true net margin.

01
Profit Check

A free diagnostic estimating how much margin markdowns, returns and channel cost are hiding in your current reporting.

02
ProfitAudit 360

A 5–25 day engagement delivering net margin by SKU, category and channel, plus a ranging and promotion roadmap.

03
Ongoing advisory

We embed the model in your merchandising and finance cycle, so range, promo and channel decisions are made on true margin.

Comparing approaches

List margin, ABC, or TDABC?

ApproachNet-Margin AccuracyChannel & ReturnsUpdates at Scale
List-Price MarginGross on list price
ABCActivity-Based Costing~~
TDABCTime-Driven Activity-Based Costing
Strong~PartialWeak
FAQ

Frequently asked questions.

Can you cost by channel — store, online, marketplace?
Yes. The model traces fulfilment, returns and channel-specific costs, so you see true net margin per channel, not a blended average.
Do returns and markdowns get included?
Yes — they are usually the biggest hidden drains. We trace markdown, return-handling and shrinkage cost to the SKUs and categories that incur them.
Will this work with our POS and ERP?
Yes. We build on the sales, returns and cost data you already capture — no new systems required.
How fast do we get category-level results?
A ProfitAudit 360 typically delivers net margin by category and channel within 5–25 working days.
Start here

Find out where your hidden margin lives.

The Profit Check takes 5 minutes. No data upload. You get a personalised profitability diagnostic.