Skip to content

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.

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/account returns 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.
  • 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.

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.

  • POST /v1/papers and POST /v1/submissions return 402 insufficient_credits when 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_until on your account), these requests return 402 credits_expired, naming the date. Your available credits are kept, not removed: your balance shows them as expired until we renew them, and then they are available again. Work that already holds credits finishes and is charged.
  • We send credits.expiring 7 days before your credits’ validity ends, and credits.balance_low when your available live balance falls below your alert threshold. When your credits expire, your available balance falls to 0, so we send credits.balance_low then too, within 10 minutes, unless your balance was already below your threshold or the threshold is 0.

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.