Skip to main content

Create & Configure TOD Templates

A Test of Details (TOD) template defines how Moby will match documents, extract data, and validate results. Good templates can be reused across similar engagements, saving hours of setup time.

What is a TOD Template?

Think of a template as a recipe for your test:

  • Test sample configuration — Which columns from your Excel matter?
  • Document categories — What types of supporting documents do you expect?
  • Matching instructions — How should Moby link documents to transactions?
  • Extraction models — What data should Moby pull from each document?
  • Validation rules — When should Moby flag an exception?

Once you create a template, you can reuse it for similar tests — just swap in a new test sample and supporting documents.


Template Components at a Glance

┌──────────────────────────────────────────────────────────────────┐
│ TOD TEMPLATE │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Reference Config │ │ Document Categories │ │
│ │ │ │ │ │
│ │ • ID column │ │ • Sales Invoices │ │
│ │ • Match columns │ │ • Purchase Orders │ │
│ │ • Display cols │ │ • Delivery Notes │ │
│ └──────────────────┘ │ • Remittance Advice │ │
│ │ • Bank Statements │ │
│ └──────────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Matching │ │ Extraction Models │ │
│ │ Instructions │ │ │ │
│ │ │ │ Per category: │ │
│ │ "Match by │ │ • Fields │ │
│ │ invoice #, │ │ • Descriptions │ │
│ │ PO #, amount…" │ │ │ │
│ └──────────────────┘ └──────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Validation Rules │ │
│ │ • Chronological sequence (Order < Delivery…) │ │
│ │ • Amount consistency across documents │ │
│ │ • Cut-off / period checks │ │
│ └───────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘

Step-by-Step: Creating a Template

Step 1: Name and Describe Your Template

Give your template a clear, descriptive name:

Good names:

  • "Revenue Recognition — Full Document Chain"
  • "AP Vouching — Purchase Invoices"
  • "Payroll Testing — Payslips to Ledger"

Avoid:

  • "Test 1"
  • "Invoice test"
  • "My template"

Add a description explaining:

  • What type of audit test this supports
  • What document types are expected
  • Any specific assumptions or requirements

Step 2: Configure Test Sample Columns

Your test sample is the Excel file containing transactions to test. Tell Moby which columns matter:

Column TypePurposeExample
Transaction IDUnique identifier for each rowRow number, Transaction ID, Journal Entry #
Matching fieldsUsed to find the right documentInvoice #, Vendor Name, Amount, Date
Display columnsShown in results for contextDescription, Account Code, Period
Auto-detection

Moby recognizes common column names automatically. If your headers are non-standard (e.g., "Inv#" instead of "Invoice Number"), you can manually map them.

Test sample best practices:

  • Headers in row 1
  • No merged cells
  • One transaction per row
  • Consistent date and number formats

Step 3: Define Document Categories

Document categories represent the types of supporting evidence you expect. Each transaction might need one or more document types.

For each category, specify:

SettingDescription
Category nameWhat type of document (e.g., "Sales Invoice", "Delivery Note")
Required or OptionalMust every transaction have this document?
Matching instructionsHow to match this specific document type
Extraction modelWhat data to extract from this document type

Example: Revenue recognition testing might have:

CategoryRequired?Purpose
Sales Invoice (Facture)✅ YesPrimary evidence — the invoice itself
Purchase Order (Bon de commande)❌ OptionalConfirms the order was placed before delivery
Delivery Note (Bon de livraison)✅ YesProves goods were delivered — determines recognition period
Remittance Advice (Détail de règlement)❌ OptionalBridge document — links invoice to bank payment
Proof of Payment (Preuve de paiement)❌ OptionalFinal evidence that money actually moved

Step 4: Write Matching Instructions

Matching instructions tell Moby how to find the right document for each transaction.

For detailed guidance and examples, see Writing Matching Instructions.

Key principles:

  • Name the fields to match on (invoice #, amount, date, vendor)
  • Specify tolerance for dates and amounts
  • Mention variations in terminology
  • Indicate which fields are most important

Step 5: Attach Extraction Models

Each document category needs an extraction model that defines what data to pull.

Your options:

  • Select existing model — Choose from your library
  • Create new model — Build fields from scratch
  • Generate with AI — Let Moby suggest fields based on sample documents

For detailed guidance on building effective extraction models, see Create & Refine Extraction Models.


Step 6: Set Validation Rules

Validation rules automatically flag potential issues by comparing extracted values to your test sample.

Rule TypeExampleWhat it Catches
Amount toleranceFlag if difference > 1%Invoice amount doesn't match recorded amount
Date toleranceFlag if difference > 7 daysDates don't align (possible timing issue)
Required fieldsFlag if Invoice # is emptyMissing critical data
Custom rulesFlag if delivery date > period endCut-off issues

Complete Example: Revenue Recognition Testing

Let's walk through creating a template for revenue recognition testing — one of the most comprehensive audit procedures, tracing the full transaction lifecycle from order to cash collection.

The Audit Objective

Revenue recognition testing verifies that revenue is properly recorded by tracing the full document chain: from customer order, through delivery and invoicing, to payment.

What we need to verify:

  1. A purchase order was placed (the customer ordered something)
  2. A delivery note proves goods were delivered before the period end
  3. A sales invoice was issued and matches the recorded amount
  4. A remittance advice links the invoice to a specific payment
  5. A bank statement proves money actually moved

Assertions tested: cut-off (delivery before period end), accuracy (amounts match across all documents), and occurrence (payment confirms the transaction happened).


How the Documents Chain Together

Each document in the chain links to the next through shared identifiers:

Reference (GL/FEC)


Sales Invoice ──────► Purchase Order (linked by PO # on invoice)

├─────────────► Delivery Note (linked by BL # on invoice)


Remittance Advice ──► Proof of Payment (linked by payment amount)
(Détail de règlement) (Bank Statement)

├── references Invoice # (links BACK to invoice)
└── contains payment amount (links FORWARD to bank statement)
The Payment Verification Chain

The Remittance Advice (Détail de règlement) is a bridge document. Without it, there is no way to prove which bank transaction paid which invoice.

Invoice  ◄──  Remittance Advice  ──►  Bank Statement
(bridges the two)
  • The remittance advice says: "We are paying Invoice #X for amount Y"
  • The bank statement shows: "Amount Y was credited on date Z"
  • Together they prove: the right invoice was paid, for the right amount, and money actually moved.

The Test Sample

Your test sample is a GL/FEC extract of sales transactions near year-end.

Sample structure:

RowLibellé (Customer)Numéro de pièceDate de pièceMontant HTCompte comptable
1Dupont SAFA-2024-184728-Dec-202445 000,00701000
2Martin & FilsFA-2024-185230-Dec-202412 500,00701000
3Leroy IndustriesFA-2024-185531-Dec-202478 200,00701000

Column configuration:

ColumnRole in Template
RowTransaction ID (unique identifier)
Numéro de pièce (Document Number)Primary matching field — this is the invoice number in the ledger
Libellé (Customer Name)Secondary matching field + display
Date de pièce (Document Date)Matching + validation (compare to delivery and payment dates)
Montant HT (Net Amount excl. tax)Matching + validation (cross-checked against invoice, PO, remittance)
Compte comptable (Account Code)Display only

Document Categories Setup

CategoryRequired?PurposeHow It Links
Sales Invoice (Facture)✅ YesPrimary evidence — the invoice itselfMatched to reference by invoice number (Numéro de pièce)
Purchase Order (Bon de commande)❌ OptionalConfirms the customer ordered before deliveryLinked via PO number referenced on the invoice
Delivery Note (Bon de livraison)✅ YesProves goods were delivered — determines recognition periodLinked via BL number referenced on the invoice
Remittance Advice (Détail de règlement)❌ OptionalBridge: connects invoice to bank paymentReferences invoice number (back-link) + contains payment amount (forward-link)
Proof of Payment (Preuve de paiement)❌ OptionalFinal cash collection evidenceMatched via payment amount from the remittance advice
Flexible Combinations

You don't have to use all 5 document types. This test supports three levels:

  • Minimum (2 docs): Invoice + Delivery Note — verifies delivery vs invoicing
  • Three-way match (3 docs): Invoice + Purchase Order + Delivery Note
  • Full cycle (5 docs): All five documents — complete revenue recognition chain

Matching Instructions

For Sales Invoices:

Match sales invoices to reference transactions using the invoice number.

Primary match: Invoice number must match the reference "Numéro de pièce"
(exact match, ignore formatting differences like "FA-" vs "INV-").

Fallback if invoice number not found:
- Customer name (fuzzy match against reference "Libellé")
+ Net amount (within 1% of reference "Montant HT")
+ Invoice date (within 3 days of reference "Date de pièce")

Amount or date discrepancies alone never invalidate a match
if the invoice number matches.

For Purchase Orders:

Match purchase orders using the PO number referenced on the
already-matched Sales Invoice.

Primary match: PO number (look for "PO", "BC n°", "Order No" on the document)
must match the PO reference found on the invoice.

Fallback: Customer name (must match reference "Libellé")
+ Net amount HT (should be close to invoice net amount).

Amount or date discrepancies alone never invalidate a match.

For Delivery Notes:

Match delivery notes using the BL number referenced on the
already-matched Sales Invoice.

Primary match: Delivery note number (look for "BL", "Delivery Note",
"Bon de livraison") must match the BL reference found on the invoice.

Fallback: Customer name (must match reference "Libellé")
+ date proximity to invoice date.

IMPORTANT: The delivery date on this document determines the revenue
recognition period — it is the triggering event.
Amount or date discrepancies alone never invalidate a match.

For Remittance Advice:

Match remittance advice using the invoice number referenced in
the payment details.

Primary match: The invoice number listed on the remittance advice must
match the invoice number from the already-matched Sales Invoice.

Fallback: Total amount TTC matching the invoice gross amount
+ customer name.

This is the BRIDGE document: it references the invoice (backward link)
and contains the total payment amount that will be used to match
the bank statement (forward link).
Amount or date discrepancies alone never invalidate a match.

For Proof of Payment (Bank Statement):

Match bank statement entries using the payment amount from the
already-matched Remittance Advice.

Primary match: The credited amount on the bank statement must match
the "Montant avis de paiement" (total payment amount) from
the remittance advice.

Verify: The payment date must be AFTER the invoice date
(temporal consistency).
Amount or date discrepancies alone never invalidate a match.

Extraction Model Setup

Sales Invoice (Facture) extraction model:

FieldTypeDescription
Numéro de factureTextUnique invoice reference (e.g., FA-2024-001, INV-XXX). Must match the reference "Numéro de pièce". Look for "Facture n°", "Invoice No" at top of document.
Date de factureDateDate the invoice was issued. Format: DD/MM/YYYY. Usually near the invoice number.
Montant HTNumberNet amount excluding tax. Format: 1234,56. Must match the reference "Montant HT". Look for "Total HT", "Net Amount".
Montant TTCNumberGross amount including tax. Format: 1234,56. Look for "Total TTC", "Amount Due".

Purchase Order (Bon de commande) extraction model:

FieldTypeDescription
Numéro de commandeTextCustomer order number (e.g., BC-2024-100, PO #...). Look for the number referenced on the matched invoice.
Date de commandeDateDate the order was placed. Format: DD/MM/YYYY. Must be BEFORE the delivery date.
Montant HTNumberNet amount on the purchase order. Format: 1234,56. Should be consistent with invoice net amount.

Delivery Note (Bon de livraison) extraction model:

FieldTypeDescription
Numéro de BLTextDelivery note reference (e.g., BL-2024-500). Look for the number referenced on the matched invoice.
Date de livraisonDateCRITICAL: The date goods were physically delivered. Format: DD/MM/YYYY. Look for "Date de livraison", "Delivery Date", "Shipped Date". This date determines the revenue recognition period.
The Delivery Date Determines Revenue Recognition

The delivery date is the triggering event for revenue recognition. It determines WHEN revenue should be recorded. Make sure your extraction model description is very specific about finding the actual delivery date — not the invoice date, order date, or document print date.

Remittance Advice (Détail de règlement) extraction model:

FieldTypeDescription
Numéro de facture règlementTextThe invoice number referenced in the payment. Must match the already-extracted invoice number. Look for "Référence", "Invoice #", "Facture n°".
Montant facture règlementNumberThe invoice amount as stated on the remittance advice. Format: 1234,56. Should match the invoice gross amount (TTC).
Montant avis de paiementNumberThe total amount being paid on this remittance. Format: 1234,56. This is the amount that will be matched against the bank statement.
Why Three Fields on Remittance Advice?

The remittance advice serves as a bridge with three roles:

  • Numéro de facture règlement links back to the invoice (proving WHICH invoice is being paid)
  • Montant facture règlement lets you verify the payment covers the right amount
  • Montant avis de paiement links forward to the bank statement (proving money moved)

Proof of Payment (Preuve de paiement) extraction model:

FieldTypeDescription
Date de paiementDateDate of the bank transaction. Format: DD/MM/YYYY. Must be AFTER the invoice date.
Montant encaisséNumberAmount credited on the bank statement. Format: 1234,56. Must match the remittance advice "Montant avis de paiement".

Validation Rules

Chronological sequence checks:

RuleConfigurationWhat It Catches
PO before DeliveryFlag if Date de commande > Date de livraisonDelivery happened before the order was placed
Delivery before InvoiceFlag if Date de livraison > Date de factureInvoice issued before goods were delivered
Invoice before PaymentFlag if Date de facture > Date de paiementPayment made before invoice was issued

Amount consistency checks:

RuleConfigurationWhat It Catches
Invoice vs ReferenceFlag if Montant HT (invoice) differs from Montant HT (reference)Invoice amount doesn't match the ledger
Invoice vs POFlag if Montant HT (invoice) differs from Montant HT (PO)Ordered amount differs from invoiced amount
Invoice vs RemittanceFlag if Montant TTC (invoice) differs from Montant facture règlementPayment covers the wrong amount
Remittance vs BankFlag if Montant avis de paiement differs from Montant encaisséMoney that moved doesn't match the payment advice

Cut-off / period checks:

RuleConfigurationWhat It Catches
Delivery before period endFlag if Date de livraison > December 31, 2024Revenue recorded in wrong period — goods not yet delivered
Required fieldsFlag if Numéro de facture or Date de livraison is emptyMissing critical evidence

What Your Results Will Look Like

Validated row (no issues):

RowNuméro de pièceCustomerRef HTInvoice HTDelivery DatePayment DateStatus
1FA-2024-1847Dupont SA45 00045 00027-Dec-202415-Jan-2025✅ Validated

✅ All amounts consistent across the full chain. Delivery before year-end. Payment received after invoice. Complete document chain verified.


Exception row (multiple issues):

RowNuméro de pièceCustomerRef HTInvoice HTDelivery DatePayment DateStatus
3FA-2024-1855Leroy Industries78 20078 20003-Jan-202520-Jan-2025⚠️ Exception

⚠️ Two issues detected:

  1. Cut-off issue — Goods were delivered on January 3, 2025, but the sale was recorded in December 2024. This revenue should be deferred to 2025.
  2. Payment amount mismatch — Montant encaissé (bank) differs from Montant avis de paiement (remittance). The difference requires investigation.

More Template Examples

AP Vouching Template

Purpose: Verify recorded expenses are supported by valid invoices.

CategoryRequired?Key Extraction Fields
Purchase Invoice✅ YesInvoice #, Vendor, Date, Amount, Description
Purchase Order❌ OptionalPO #, Approved By, Date
Goods Receipt❌ OptionalReceipt Date, Quantity, Condition

Key validation: Invoice amount matches recorded expense within tolerance.


Bank Confirmation Testing

Purpose: Match bank confirmation letters to recorded account balances.

CategoryRequired?Key Extraction Fields
Bank Confirmation✅ YesAccount #, Balance, Currency, Confirmation Date, Bank Name

Key validation: Confirmed balance matches recorded balance.


Saving and Sharing Templates

Once your template is configured:

  • Save — Template is saved to your library
  • Duplicate — Create a copy to modify for similar tests
  • Share — Make available to your team (client or firm level)

For details on sharing and visibility, see Organize Your Models.


Tips for Effective Templates

TipWhy It Matters
Start simpleAdd complexity only when needed
Test on 5-10 transactions firstCatch issues before running on full sample
Iterate on matching instructionsRefine based on what works
Document assumptionsFuture users will thank you
Use descriptive field names"Delivery Date" not "Date1"
Save working templatesBuild a library of proven templates