A resolution in Fini (usefini.com) is a customer issue that the Fini agent solves end to end, with no human handover. It is the unit Fini bills on: escalated conversations are not charged, conversations reopened within 72 hours are not billed twice, and greetings, spam, and abandoned sessions are never billable. The definition is deliberately strict. A conversation where the agent replied but a teammate still had to step in is not a resolution, even if the agent did most of the work. That keeps your bill tied to the outcome you care about (the customer’s problem is gone) rather than to activity (the agent sent a message). This page explains the definition, gives concrete examples, shows how it lines up with the Conversation Status you see in Analytics and Inbox, and walks you through checking your own numbers.

The definition

A conversation counts as a resolution when all of the following are true:
Why Fini bills on resolutions, not conversations or seats. A per-conversation or per-seat price charges you whether or not the customer’s problem was solved. Billing on resolutions puts the cost of a failed conversation on Fini: if the agent can’t solve it and hands it to your team, you pay nothing for that conversation. See How Fini pricing works for the full model.

What counts and what doesn’t

To confirm (internal, remove before publish): For a conversation the agent resolves that the customer reopens within 72 hours and that then escalates to a human, is the original resolution removed from the bill (net zero), or does it stay billed once? And is a reopen after 72 hours billed as a second, separate resolution?
To confirm (internal, remove before publish): The “Internal Comment then a teammate replies” row is inferred from the definition (“no human handover”), not from a published billing rule. Confirm how conversations where Fini only posts internal notes or drafts are counted.

How a resolution maps to Analytics statuses

Every conversation ends in exactly one of three Conversation Status values. Fini applies them with a fixed, ordered decision rule (see Tags), and the same tag drives the Inbox status badge, Reply Rules, and resolution analytics. The labels differ slightly between pages of the dashboard. They are the same three states: A conversation can move between statuses before it settles. The status it ends in decides whether it can be billed:

Resolution rate is not deflection rate

Analytics shows two different headline numbers, and only one of them matches billing:
  • AI resolution rate counts only conversations with status Resolved by AI. This is the number that tracks your billable resolutions.
  • Deflection rate is 100% - Human escalation rate. Conversations still Waiting for Customer count as deflected unless they escalated, so deflection rate is always equal to or higher than AI resolution rate.
If you estimate spend from deflection rate, you will overestimate it, because waiting and abandoned conversations are never billed. Use AI resolution rate. Resolution vs deflection explains the difference in more depth.

Where the product status and the bill can differ

The Resolved by AI count in Analytics and the number of billable resolutions on your invoice are close, but they are not guaranteed to be identical for the same period. The known reasons:
  1. Greetings and spam. The Conversation Status rule tags a conversation Resolved when the agent gave a complete answer and nothing is pending. A short greeting the agent answered politely can land in Resolved by AI, while billing never counts greetings or spam. Your billable count can therefore be lower than the Analytics count.
  2. Reopens within 72 hours. A customer who writes back about the same issue within 72 hours is billed once. Analytics counts conversations, so depending on your helpdesk, a reopen can appear as one conversation or two.
  3. Status changes after the fact. Analytics filters on the latest status. A conversation that was Waiting for Customer at the end of one month and resolved early the next can move between periods.
  4. Test traffic. Conversations you create yourself in Inbox are persisted just like real ones, with full AI Steps. Whether test conversations, including Test Suite runs, count in Analytics or billing is still being confirmed (see below).
To confirm (internal, remove before publish): (a) Does billing read the Conversation Status tag directly, and is there a separate classifier that removes greetings and spam from Resolved by AI? (b) Are Inbox-created conversations, dashboard tests, Test Suite runs, and replays excluded from billing and from Analytics? (c) Which timestamp assigns a resolution to a billing period: conversation start, the moment it was tagged Resolved, or the end of the 72-hour reopen window?

How to check your own numbers

You can reproduce the resolution count for any period yourself, from the dashboard or the API.
1

Open Analytics for the right agent and period

Open Analytics, pick the agent in the agent picker, and set the date range to the period you want to check (for example, last calendar month). KPI change pills compare against the preceding window of the same length.
2

Read the three-way status split

Scroll to Conversation Status in the Distribution section. It shows Resolved by AI, Escalated to Human Team, and Waiting for Customer as shares of total Conversation volume. Multiply the Resolved by AI share by conversation volume to get the resolved count.
3

Filter to resolved conversations

Set the pinned Conversation status filter to Resolved by AI. Every KPI card, chart, and table below the header now reflects only resolved conversations. Add Channel or Source from + Filter to split by channel or helpdesk.
4

Spot-check in Inbox

Open the same slice in Inbox with the Conversation status filter, and read a sample. The AI Steps trace on each conversation shows the Output Tag Selection reasoning behind its status. Look for greetings, spam, and same-issue reopens, which are excluded from billing.
5

Pull the numbers by API (optional)

For a repeatable monthly check, call Get agent analytics (GET /v2/bots/:id/hc-analytics/public) with startEpoch, endEpoch, and the latestStatus filter, using an API key with the read scope. See the Analytics API overview for the full query model.
If a status looks wrong on a specific conversation, read the AI Instructions on the Conversation Status tag group. The rules encode specific phrases, so a reply like “I have forwarded your request to our specialist team” is tagged as an escalation by design. Fix the reply wording in your Prompts or Intent Rules rather than the tag.
To confirm (internal, remove before publish): Is there a usage or billing view in workspace settings that shows the billable resolution count directly? The Analytics page says cost and token usage are tracked in workspace settings; if billable resolutions are shown there too, this section should point to it as the source that matches the invoice.

How Fini pricing works

Usage-based pricing per resolution, what you are never charged for, and how to estimate spend.

Analytics

The Conversation Status split, AI resolution rate, and deflection rate as the product defines them.

Resolution vs deflection

Why Fini treats resolution rate as the metric that matters.

Billing FAQ

Short answers to common questions about invoices, payment, and what is billed.