Skip to content

How ROJI works

One engagement, end to end: the firm publishes a storefront, a client or their agent asks for a quote, the firm scopes and prices it, a person signs, and the work is paid through a schedule — each charge on the rail that fits it, every step on one record.

1. The storefront

A firm claims a handle — roji.ai/firms/hale-marsh-cpas — and publishes a headline, a few paragraphs, and the services it sells. The page shows the firm's credentials with how each was verified, every live listing with what it asks for, and how the firm takes payment: which rails, the card ceiling, default terms, whether it holds retainers in a client trust account. The HTML is deliberately plain. The markdown version is the fuller one: it adds listing ids, request fields, and the exact MCP tools and REST calls that turn reading into an engagement, including where a person has to step in. A storefront is independent of the directory — a firm can run one for its own clients without appearing in ROJI's listings at all.

2. Two kinds of listing

A fixed-price listing is ordered at its list price and paid in full by card when the order is placed — a notarisation, a document review, a site visit. A quote-priced listing cannot be ordered at all; its price is where engagements start. An audit, an investigation, a litigation-support engagement is quoted: the firm scopes it, prices it, and attaches its terms. Both carry a structured input schema, a deliverable, and the jurisdictions they cover, and both can only be published by a firm whose verification supports them.

3. The quote

A client, or the agent acting for them, asks for a quote: the listing, the request, and — where the firm requires it — client intake: the legal name of the client entity, its type and jurisdiction, owners and affiliates, the period, who the report is for. That is what a firm needs for its own independence and conflict check; ROJI collects and presents it, the firm decides. Scoping is a thread. When the firm is ready it sends the quote: the scope in its own words, a payment schedule, the terms (accepted rails, card ceiling, autopay, a cap on time and expenses, an evergreen retainer), and its engagement letter, rendered from the firm's template. A firm can also write a proposal for a client it already has and hand over a one-time link.

4. A person accepts

An agent can do everything around a quote — request it, discuss it, read the schedule, pay the charges, send the documents. It cannot sign an engagement letter. When a quote carries one, the API refuses any credential that is not a signed-in person — an API key, an agent token, and a user token minted through an agent's OAuth session are all turned away — and the agent is told to route the quote to someone with authority to bind the client. That person reads the letter in the console, types their name and title, and the hash of the text they read travels with the acceptance, so a letter that changed in the meantime is refused rather than silently signed. Accepting creates the order and its schedule. Nothing is charged by accepting.

5. The payment schedule

Every line of the quote becomes a charge with its own trigger and terms:

Deposit and retainer

Due on acceptance. A retainer is an advance held against future bills; where the firm has connected a client trust account it is paid there and arrives whole — no platform fee is taken from trust money. An evergreen retainer is topped back up when it falls below the floor the quote set.

Milestones, progress, final

A milestone falls due when the firm marks it reached; a progress bill when the firm raises it; the final balance on delivery. Each can carry net terms — net 30 from the day it falls due, for a corporate client's accounts payable.

Time and expenses

Raised during the work as dated entries — hours at a rate, or expenses passed through — against the cap agreed in the quote. A bill that would exceed the cap is refused; more needs a new quote, never a silent overage.

Installments and recurring fees

A dated payment plan, or a fee that repeats monthly, quarterly or annually. The next occurrence is raised when the previous one is paid.

6. The rails

A charge is paid on the rail that fits it, and the engagement's terms say which are allowed. Card settles at once, below the ceiling the firm sets. ACH debit is the default for five-figure fees: it comes back processing and settles days later — the charge shows as paid when Stripe confirms it, and a returned debit fails it. A pay link is a Stripe-hosted page anyone can pay — the firm hands it to a client with nothing on file, or to an accounts-payable desk. A cheque or wire that arrived outside ROJI is recorded by the firm. And x402 lets an agent settle a charge from a wallet over HTTP. Whatever the rail, the money is a Stripe destination charge to the firm's own account; ROJI takes its percentage as the application fee on it and never holds the funds. Autopay, where the client allows it, charges the saved method when a charge falls due, bank first.

7. Documents and delivery

The firm asks for what it needs as a request list — trial balance, twelve months of bank statements, the management representation letter — with a due date per item. The client or their agent uploads against each item: PDFs, images, spreadsheets, Word documents, CSV, text. The API sniffs the bytes and ignores the declared type, and every file is encrypted at rest with a key per file; a swapped or corrupted object fails to decrypt rather than being served. The firm accepts an item, sends it back with a note, or waives it. Delivery is the report, as a file and as the structured deliverable where the listing declared one. Questions and status updates run as typed messages on the order, as they do for fixed-price work.

8. Refunds, cancellation, authority

Refunds are per charge and the firm's call: a paid charge can be refunded in full or in part, and the fee on it is reversed pro rata. Either side can call off an engagement under way; unpaid charges are voided and what has been paid stays paid until the firm refunds what was unearned, because only the parties know what was. A quoted engagement has no delivery clock — the dates live in the schedule — so the automatic SLA refund that protects a fixed-price order does not apply to it. Every charge records who authorised it: the agent or person, the spend-policy decision, and how the credential arrived. That record, with the intake, the thread, the letter and the documents, is what both sides read and what mediation decides from.

9. Fixed-price orders, as before

Everything the platform did for a fixed-price order still holds: an itemised fee preview before any charge, a Stripe destination charge at placement, typed questions that pause the SLA clock, automated deliverable checks, an automatic full refund on a missed SLA, a refund window after delivery with a 72-hour response clock on the business, and reviews bound to orders where money moved. The technical reference is on the order lifecycle page; the engagement surface is in the developer guide.

See it live

Open a storefront.
Quote a real engagement.

There is no sandbox — every quote and every charge on ROJI is a real transaction. Getting started walks a firm through verification and its first listing, and gives an agent a spend policy before it can pay anything.