Skip to main content

Building an AI Voice Agent Startup? Why Twilio's Per-Minute Bill Belongs in COGS, Not Overhead

Published 12 min readMike ThriftMike Thrift
Building an AI Voice Agent Startup? Why Twilio's Per-Minute Bill Belongs in COGS, Not Overhead
On this page

Your pricing spreadsheet says each call minute costs you $0.014. Your Twilio invoice says something closer to ten times that. Both numbers are real, and the gap between them is where voice-agent startups quietly lose their margins — not in month twelve, when the auditors arrive, but in month two, when the first real usage bill lands and the founder realizes the unit economics were modeled on the cheapest line item on the page.

If you sell an AI receptionist, an AI appointment setter, or any voice agent that talks to your customers' customers, telephony is not overhead. It is the single most direct cost of delivering your product, and it belongs in cost of goods sold next to every other per-minute input your agent consumes. Here is how the $0.014 minute becomes a fully loaded $0.15 or more, why the whole stack is COGS, and how to book it so your gross margin tells the truth.

The $0.014 minute is real — and it is the smallest line item​

Twilio's published US pay-as-you-go voice rates are genuinely cheap at the telephony layer. An outbound call to a US local or toll-free number costs $0.0140 a minute; an inbound call to a local number costs $0.0085 a minute; the local number itself rents for $1.15 a month. Those are the headline numbers on the pricing page, and they are the numbers most founders plug into their first margin model.

Three details make the invoice bigger than that model predicts.

Billing increments round every call up. Twilio bills voice usage in whole 60-second increments from the moment the call is answered, so a call that runs 1 minute and 6 seconds bills as 2 full minutes. A receptionist agent that handles short calls — appointment confirmations, hours-and-directions questions, spam hang-ups — pays a rounding tax on nearly every interaction. If your average answered call lasts 70 seconds, you are billed for 120, and your effective telephony rate is roughly 70 percent above the sticker price before you have added a single AI input.

Direction and number type move the rate. Inbound to a local number, inbound to toll-free, outbound to local, outbound to toll-free, and international legs each carry their own rate. An agent that takes inbound calls and then dials out — a warm transfer to a human, a callback, an outbound reminder campaign — stacks two different rates on one conversation. Founders who model "one rate times total minutes" undercount every call with more than one leg.

Numbers, fees, and add-ons accumulate. Each local number is $1.15 a month, toll-free numbers cost more, and features like call recording add their own per-minute charges. None of these is large alone. Together, across dozens of client numbers, they form a fixed-plus-variable base that never appears in a naive per-minute model.

So keep the $0.014 in your model — but label it correctly. It is the telephony floor, not the minute cost.

The stack that turns $0.014 into roughly $0.17​

A bare phone call is not an AI voice agent. Between the caller's voice and your agent's answer sits a chain of metered services, and each one bills you separately.

The speech layer. You need real-time transcription of the caller, an LLM reasoning over the conversation, and text-to-speech producing the reply. Twilio sells this as a managed layer called ConversationRelay at $0.07 a minute, with voice minutes billed separately — so an outbound AI call starts at $0.084 a minute before the LLM has generated a single token. The alternative is assembling your own pipeline over raw audio streams, which trades the $0.07 platform fee for per-minute transcription and synthesis bills plus the engineering cost of keeping the pipeline fast enough to feel human. Either way, speech is the largest single input, roughly five times the telephony it rides on.

The reasoning layer. Every turn of the conversation sends the transcript to a language model. Cost here depends on the model, the prompt length, and how chatty your agent is — a receptionist that confirms details in short exchanges burns far fewer tokens than a sales agent that tells stories. Practitioners consistently report that LLM inference is the most volatile input: it is the one that spikes when a caller goes off-script and the conversation runs long.

Recording, analytics, and redundancy. Call recording, conversation intelligence, backup carriers for failover, and the phone numbers themselves round out the stack. Individually small, collectively another cent or two per minute.

Add it up and the industry's all-in benchmarks cluster where you would expect: about $0.09 to $0.13 a minute for a premium build, $0.15 to $0.33 all-in on hosted platforms whose advertised rates exclude telephony and inference, and retail prices from roughly $0.07 to over $0.30 a minute. The $0.014-to-$0.17 spread in the headline is not an exaggeration — it is the distance between the telephony floor and a fully loaded minute on a managed stack. Price against the floor and you have promised a 90 percent margin on a product that delivers 50.

Why the whole stack is COGS, not overhead​

Where these costs sit in your books matters more than most founders expect, because gross margin is the number investors, lenders, and acquirers read first. The rule is simpler than it looks.

Anything that scales directly with delivering your product is cost of revenue. For software businesses, that means production hosting, payment processing, customer support, and third-party APIs the product depends on — industry COGS guides name Twilio and OpenAI explicitly as canonical examples. Your voice agent cannot serve one minute without telephony, transcription, inference, and synthesis. Those inputs rise and fall with customer usage, which is exactly the test: if serving another customer-minute costs you another $0.15, that $0.15 is COGS.

Overhead is what you pay whether or not the phone rings. Your office, your marketing spend, the engineers building next quarter's features, the founder's salary — those are operating expenses. A useful challenge question for any ambiguous cost: if every customer paused for a month, would this bill go to zero? Twilio usage would. The $1.15 number rentals would not, which is why many shops book usage as variable COGS and number rentals as fixed COGS — both above the gross-margin line, but tracked separately so unit economics stay clean.

Misclassification lies twice. Put Twilio in overhead and your gross margin reads 85 percent while your operating expenses quietly absorb the cost of every call. That flatters the margin investors benchmark — pure subscription SaaS runs 75 to 85 percent, while AI-inference businesses cluster at 40 to 65 percent — and it hides the real pricing signal. A founder who sees 85 percent gross margin thinks there is room to cut prices; a founder who sees the true 52 percent knows the floor. The second founder survives the first enterprise deal that demands volume discounts.

There is a related trap on the revenue side. If you resell minutes at a markup, that markup is your revenue and the platform bill is your COGS — straightforward. But if you charge a flat $500 monthly retainer that includes 2,000 minutes, you still owe the per-minute cost on every minute the client actually uses. Flat pricing does not flatten your costs; it just moves the variance onto you. Model the retainer against expected usage at fully loaded cost, and set an overage rate for the clients who blow past it.

The reconciliation job: billed minutes are not call-log minutes​

Once the stack is classified correctly, it has to be reconciled — and voice billing has quirks that make this a genuine month-end task rather than a glance at the invoice.

Call logs track events; usage records track billed increments. Your call logs show every call at its true duration, while the invoice shows billed minutes after rounding each call up to the next whole minute. The two will never match exactly, and the gap widens as your average call gets shorter. Reconcile them the way you would any metered input: pull per-call durations from the logs, apply the 60-second rounding rule yourself, and confirm your computed billed minutes land within a small tolerance of the invoice. A gap larger than rounding explains is worth disputing — it usually means a misconfigured retry loop redialing failed calls, or a test number left running in production.

Reconcile per product, not per invoice. A single Twilio invoice mixes telephony minutes, ConversationRelay minutes, number rentals, recording, and carrier fees. Each maps to a different COGS subaccount, so allocate the invoice across line items instead of booking one lump sum. The line-item split is also what lets you compute a true blended cost per minute each month: total voice COGS divided by total served minutes. Watch that number the way a restaurant watches food cost — when it drifts up, something changed in the mix, and you want to know whether it was longer calls, a pricier model, or a client abuse pattern.

Close the loop to client usage. If you bill clients per minute, compare the minutes you billed against the minutes you were billed for. Rounding means you will sometimes pay for minutes you cannot fairly charge — most shops absorb this as a cost of doing business and price the per-minute rate with a cushion. If you bill flat retainers, compare each client's actual usage cost against the retainer monthly. The client paying $500 while consuming $460 of fully loaded cost is not a $500 client; they are a $40 client wearing a costume, and the costume comes off at renewal.

Pricing so the spread does not eat you​

With true cost per minute in hand, pricing becomes arithmetic instead of hope. Three structures dominate voice-agent pricing, and each handles the spread differently.

Per-minute pricing passes the variable cost through most transparently: set the rate at fully loaded cost divided by one minus your target margin. At $0.15 loaded cost and a 65 percent target margin, the floor is about $0.43 a minute. The risk is sticker shock against competitors quoting telephony-only math — answer it by quoting all-in against their all-in, because their clients will discover the real number anyway.

Per-call pricing works when your calls are uniform — a dentist's reminder call is always short. Set the per-call price from the average billed duration including rounding, not the average talk time. A 40-second average call bills as a full minute, so per-call pricing on sub-minute calls must carry the rounding cost or bleed a little on every ring.

Subscription plus overage fits clients who want predictable bills: a base fee covering a minute bundle, with overage at a stated per-minute rate. Set the bundle from expected usage at loaded cost, price the base for margin at typical usage, and make the overage rate — not the base — your margin protector. The most common failure mode is a generous bundle with no overage meter running, discovered when one client's receptionist handles a viral week.

Whichever structure you choose, write the margin math into your books at the same granularity you bill. If clients pay per minute, your COGS subaccounts should let you report cost per minute. If they pay per client, tag usage by client. Margin you cannot see per unit is margin you cannot defend.

Booking it in plain-text books​

A voice-agent startup's books need one income account and a COGS tree that mirrors the cost stack. Telephony, the AI platform layer, and inference each get their own subaccount so the monthly blended rate is a query, not a forensics project. A month for one client looks like this:

2026-11-01 * "Acme Dental" "November voice-agent plan - 2,400 minutes at $0.30"
  Assets:Receivable:Clients  720.00 USD
  Income:Voice-Agent-Fees  -720.00 USD
 
2026-11-02 * "Twilio" "October usage - telephony plus ConversationRelay"
  Expenses:COGS:Voice-Telephony  201.60 USD
  Assets:Bank:Checking  -201.60 USD
 
2026-11-02 * "AI platform" "October usage - speech-to-text plus LLM plus text-to-speech"
  Expenses:COGS:Voice-AI-Inference  144.00 USD
  Assets:Bank:Checking  -144.00 USD

Revenue of $720 against $345.60 of voice COGS leaves $374.40 of gross profit — a 52 percent margin, squarely in the band where AI-inference businesses actually live. If the Twilio and AI platform postings had been booked to overhead instead, the same month would report a fantasy 100 percent gross margin while $345.60 of per-minute cost hid below the line, invisible to every pricing decision the founder makes next.

Two refinements pay off as you scale. First, split number rentals into a fixed-COGS subaccount so they stop polluting the variable per-minute rate. Second, tag client usage with metadata on the COGS postings so one query answers "what did each client cost us this month" — the question that decides renewals, overage conversations, and which customer profiles to chase.

Your next invoice is the audit​

Pull your last Twilio invoice and compute the number your pricing model assumed away: total voice spend divided by total served minutes, with every metered input included. If the result lands within a few cents of your modeled cost, your margins are real and this post was a cheap confirmation. If it lands at double or triple the model, you have found the leak before it found you — reclassify the stack into COGS, reprice from the loaded rate, and put the blended cost per minute on the same dashboard as revenue. The founders who survive scale are not the ones with the cheapest minute; they are the ones who knew what their minute actually cost.

Source: https://beancount.io/blog/2026/11/09/ai-voice-agent-twilio-cogs-gross-margin-guide

Published: November 9, 2026