Credits and billing
You prepay credits, and two kinds of work use them: processing a paper and grading a script. Both are priced per page, and you pay only for work that completes.
What uses credits
Section titled “What uses credits”| Work | Credits | Charged when |
|---|---|---|
| Processing a paper | Your paper rate × the pages of the question paper and marking scheme | The paper has been read and moves to awaiting_review, whether or not you approve it later |
| Grading a submission | Your grading rate × the pages of the answer script | The submission becomes graded |
- Your rates are set in your agreement, and
GET /v1/accountreturns them. A rate can be zero. - A PDF counts all its pages, including covers and blank pages. Each image counts as one page, so each image must show exactly one page.
- If a script has no readable answers, such as blank pages or the wrong document, it is still read and marked, so it is charged. It is never released automatically. See Scripts with no readable answers.
- If we misread your paper, correct it in the review workspace. If it can’t be corrected, contact us and we return the credits.
What never uses credits
Section titled “What never uses credits”- Work that fails or that you cancel.
- Our automatic retries after a temporary fault on our side.
- Approving a paper, and reviewing and releasing results.
- A second submission for a student who already has an active one for that paper. It is refused with
409 submission_exists, so a resent batch can’t be charged twice. See One active submission per student. - Reading papers, submissions, results and reports; webhooks; and API requests in general.
Before any work starts, we count the pages and place a hold for the full cost. A hold moves credits from available to held; your total balance doesn’t change. When the work completes, the hold becomes a charge. If the work fails or is cancelled, the hold is released in full.
| Step | Available | Held | Charged |
|---|---|---|---|
| Before | 1,000 | 0 | 0 |
| You submit a 12-page script, at 1 credit per page | 988 | 12 | 0 |
| The script is graded | 988 | 0 | 12 |
| Or: grading fails | 1,000 | 0 | 0 |
A hold never outlives the work. If our work on a paper (processing) or a submission (queued or processing) hasn’t finished within 24 hours, it fails with processing_timeout, and its hold is released. Time spent waiting for your review, in awaiting_review or graded, has no limit.
The billing object
Section titled “The billing object”Every paper and submission has a billing object that shows where it stands:
billing.status |
Meaning | billing.credits |
|---|---|---|
pending |
Pages not counted yet. Nothing is held. | null |
held |
Credits are on hold for this work. | Credits held |
charged |
The work completed and was paid for. | Credits charged |
not_charged |
The work failed or was cancelled, so nothing was charged. | 0 |
billing.pages is the page count, or null until we’ve counted it.
When credits run out
Section titled “When credits run out”POST /v1/papersandPOST /v1/submissionsreturn402 insufficient_creditswhen your available balance can’t cover one page at your rate.- If your balance covers one page but not the full cost once we’ve counted the pages, the paper or submission fails with
insufficient_credits, and nothing is charged. Top up, then create it again with a new idempotency key. - When the validity period of your credits ends (
credits_valid_untilon your account), these requests return402 credits_expired, naming the date. Your available credits are kept, not removed: your balance shows them asexpireduntil we renew them, and then they are available again. Work that already holds credits finishes and is charged. - We send
credits.expiring7 days before your credits’ validity ends, andcredits.balance_lowwhen your available live balance falls below your alert threshold. When your credits expire, your available balance falls to 0, so we sendcredits.balance_lowthen too, within 10 minutes, unless your balance was already below your threshold or the threshold is 0.
Statements
Section titled “Statements”GET /v1/credit_transactions lists every top-up, charge and adjustment. Holds are not transactions: they appear in GET /v1/balance and on each object’s billing. Neither is the end of your credits’ validity: nothing is removed, and your balance shows the credits as expired.
Credits are added to your account when you buy them, as set out in your agreement.