Outcome-based pricing

결과 기반 가격

Charge for verified successful outcomes instead of seats or attempts.

···
html
<div class="stage"><div class="label">SAME WORKFLOW · DIFFERENT BILLABLE UNITS</div><div class="price-context">20 ATTEMPTS → <b id="success-count">14</b> VERIFIED</div><div class="price-options"><div><b>4</b><span>SEATS</span></div><div><b>20</b><span>TASKS</span></div><div class="price-outcome"><b id="outcome-units">14</b><span>OUTCOMES</span></div></div><input id="success-range" type="range" min="6" max="20" value="14" aria-label="Verified successes"><div class="hint">CHANGE VERIFIED SUCCESSES</div></div>
css
.stage{position:relative;width:min(94vw,760px);height:min(88vh,310px);font:800 clamp(10px,max(3.4vmin,1vw),15px)/1.25 sans-serif}.stage *{box-sizing:border-box}.label{font-size:clamp(10px,max(3.4vmin,1vw),12px);letter-spacing:.1em;color:var(--muted)}.accent{color:var(--accent)}.pill{border:1.5px solid var(--fg);border-radius:999px;background:var(--surface);padding:.5em .8em}.hint{position:absolute;right:2%;bottom:0;font-size:clamp(10px,max(3.4vmin,1vw),12px);color:var(--muted)}.price-context{position:absolute;top:16%;left:3%;right:3%;font-size:clamp(11px,4vmin,18px);text-align:center}.price-context b{color:var(--accent)}.price-options{position:absolute;left:3%;right:3%;top:34%;height:43%;display:flex;gap:2%}.price-options>div{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid var(--fg);background:var(--surface)}.price-options b{font-size:clamp(22px,8vmin,50px);line-height:1}.price-options span{font-size:clamp(10px,3.4vmin,13px)}.price-options .price-outcome{background:var(--accent-2);color:#211b19}.stage input{position:absolute;left:4%;bottom:10%;width:92%;accent-color:var(--accent)}
js
const range=document.querySelector('#success-range'),count=document.querySelector('#success-count'),units=document.querySelector('#outcome-units');let touched=0;function render(){count.textContent=range.value;units.textContent=range.value}range.addEventListener('input',()=>{touched=Date.now();render()});render();setInterval(()=>{if(Date.now()-touched<6500)return;range.value=String(Number(range.value)>=20?6:Number(range.value)+2);render()},950);

Outcome-based pricing for AI products bills for an agreed successful result rather than access or every attempt. A 2026 PLG forecast expects more task and outcome pricing. Stripe's AI pricing guide recommends the outcome model when results can be measured reliably and attributed clearly.

The demo holds seats and attempts constant while verified successes change. Define success, verification, and dispute handling before charging for an outcome.

When to use

Use it when both parties can verify whether the promised result occurred.

Open as page ↗