CIT vs. MIT
Every stored-credential relationship starts with a Customer Initiated Transaction (CIT), during which the customer is present and explicitly authorizes future charges.CIT — Customer Present
The customer is actively completing checkout. You collect the card via a fresh nonce (or raw card number) and set
cardOnFile.usage: "first". The response returns card.networkTransactionId and card.networkReferenceId — store both values in your database. You will need them for every subsequent MIT.MIT — Merchant Initiated
The customer is not present. You pass the saved vault token plus the stored-credential fields, including the
networkTransactionId and networkReferenceId from the original CIT. The card networks use these references to link the charge back to the authorized mandate.The cardOnFile Object
Add a cardOnFile block inside the card object on both the CIT and every MIT. cardOnFile itself is optional (Therius derives a default from context — a fresh tokenize vs. a tokenData reuse — when omitted), but once you send it, usage, initiatedBy, and type are the three fields that together classify the charge for the card networks.
initiatedBy uses "cardholder", not "customer" — match the enum exactly.exceptionReason is optional and sits on its own axis, independent of type — it does not replace type, it adds a business-exception label on top of it. Most subsequent MIT charges never send it; set it only when the specific charge falls into one of these scheme-defined categories:
Initial CIT Example
Collect the card as normal (using a nonce from the SDK or raw card data on a PCI-compliant server), tokenize it by settingtokenize: true, and include the cardOnFile block.
Saving a Card Without Knowing the Future Charge Pattern
If you’re vaulting a card and don’t yet know whether it will become a recurring subscription, an installment plan, or a one-off unscheduled top-up, declare it as"type": "unscheduled" — the category card networks intend for “cardholder authorized future use, pattern not yet determined.” Store the returned networkTransactionId/networkReferenceId regardless; you’ll need them for whichever MIT you eventually send.
If the card will only ever be reused at a future customer-present checkout — the shopper picks it from their saved methods and confirms the charge themselves, never charged unattended by you — you don’t need a
cardOnFile block at all. Just send tokenize: true with shopper.id. cardOnFile only matters once an MIT will occur.Subsequent MIT Example — Recurring Renewal
On every subsequent charge — a renewal, an installment, an unscheduled top-up — pass the vault token plus the stored-credential fields and the network references from the original CIT. This example shows a recurring (subscription-style) renewal; swaptype for installment or unscheduled to match the mandate you established on the CIT.
The Therius subscription engine manages stored credentials internally for all subscription renewals. You never need to supply
cardOnFile or network reference fields when using the subscription API — this guide is only relevant if you are building your own billing logic outside the subscription engine.Credential Types
Recurring
Use
"type": "recurring" for fixed-amount charges that repeat on a predictable schedule — monthly SaaS fees, annual renewals, membership dues.Installment
Use
"type": "installment" when a customer authorizes a split payment over a fixed number of charges — for example, three monthly payments for a single purchase.Unscheduled
Use
"type": "unscheduled" for charges that are authorized in advance but triggered by a merchant-defined event — usage-based billing, account top-ups, convenience fees, or a card saved for future use before you know its eventual pattern.exceptionReason — a separate, optional axis from type, used only when a specific MIT falls into a scheme-defined exception category.

