Finance & AccountingFeatured

Duplicate Payment Auditor

Finds the payments your exact-match control was never going to catch

Version 2Published Sep 2, 2026
Finance & AccountingExtractclaude-opus-5Read-only · auto8 hard rules5 handover rulesResult
8hard rules
Things it must never do, enforced in every run
5handover rules
Conditions where it stops and gives the work to a person
8output fields
A structured result, not a paragraph you have to re-read
≤7steps per run
Bounded work: at most 5 tool calls, enforced by the runtime

Read-only by design. This agent has no path to sending, spending, publishing or committing anything. Where that limit is the product, removing it would remove the reason to trust the output.

Live wiring for version 2. Tool nodes are the capabilities this agent is registered to call — nothing else can run.

Overview

Duplicate payments are the most reliably recoverable money in any finance function, and almost every organisation has them. Not through carelessness — the controls that exist only catch the easy case.

An accounts payable system blocks the same invoice number from the same supplier twice. That check is exact, and duplicates almost never are. The invoice arrives by email and again by post, keyed once as "INV-4471" and once as "4471". The supplier is set up twice under slightly different names, so the system sees two suppliers. A credit note is applied against the wrong invoice, leaving the right one open to be paid again. An invoice is paid on account and again against a purchase order. A payment run is rerun after a bank rejection and the successful half goes out twice.

Every one of those passes an exact-match control, and every one is visible to a check that compares amount, date proximity and supplier identity rather than reference strings.

The other half of the value is the window. Suppliers do not report being overpaid — the credit sits on their ledger, and if the relationship ends before it is used, the money is gone.

This agent finds them and gives you the evidence. It recovers nothing itself and contacts no supplier: a recovery request is a conversation with someone you depend on.

Benefits

Money back with no negotiation

It was already yours, and the evidence is unarguable.

The control gap named

So the next one is prevented rather than found later.

Recovered while it still can be

A credit on a dormant supplier's ledger is usually lost.

What it does

  • Matches on substance, not on reference strings

    "INV-4471" and "4471" are the same invoice. Every exact-match control in every AP system sees two.

  • Finds duplicated supplier records

    One supplier set up twice under slightly different names. The system sees two, and blocks nothing.

  • Catches misapplied credit notes

    A credit posted against the wrong invoice leaves the right one open, and it gets paid again.

  • Detects rerun payment batches

    A run repeated after a bank rejection, where the half that succeeded goes out twice.

  • Ranks by what is still recoverable

    A live supplier with ongoing volume is recoverable. A dormant one is a much harder conversation.

  • Recovers nothing itself

    It contacts no supplier and raises no claim. A recovery request is a conversation, not a transaction.

What this changes

What this changes about your week

It takes over
Finding invoices that were paid more than once.
Done today by
The AP system's duplicate check, which only catches exact matches.
How often
Never, beyond the automated block.
Typical manual effort
References, supplier records and credit notes all have to be normalised before anything compares.

Why Finance & Accounting in particular. Real duplicates are never exact — that is why they got through. 'INV-4471' and '4471', one supplier set up twice, a rerun payment batch. And suppliers never report being overpaid.

  • Runs unattended

    Started by you or by an event, and it finishes on its own. Nothing waits for someone to be at a desk.

  • The same standard every time

    The two-hundredth item is held to the bar the first one was. Consistency is the part people cannot sustain.

  • It cannot act on its own

    Duplicate Payment Auditor has no path to sending, spending or committing. That limit is why its output is safe to act on.

How it runs

This agent runs server-side through the PROMIVO runtime. Each run is logged step by step and every tool call is permission-checked before it executes.

  1. 1InputValidated against the agent input schema
  2. 2Modelclaude-opus-5 with automatic fallback
  3. 3Toolsextract_structured_data
  4. 4PermissionsRuns READ actions automatically; anything higher waits for approval
  5. 5OutputStructured result matching the output schema
  6. 6LoggingTokens, duration and every step recorded

Demo

Demo dataIllustrative sample output, abridged.

Input

{
  "period": "24 months to Aug 2026",
  "currency": "USD",
  "payments": [],
  "dateProximityDays": 90
}

Output

{
  "escalate": true,
  "disclaimer": "An analysis of your own payment records. No supplier has been contacted, no claim raised, nothing offset or reversed, no supplier records merged, and candidates marked needs-checking are reported with the reason they may be legitimate rather than presented as findings.",
  "duplicates": [
    {
      "amount": 18400,
      "payments": [
        "PAY-40218",
        "PAY-41776"
      ],
      "supplier": "Nordvale Supplies",
      "daysApart": 47,
      "mechanism": "duplicate-supplier-record",
      "confidence": "high",
      "controlGap": "The supplier master allows a second record with the same bank details and tax identifier.",
      "recoverability": "live-supplier",
      "whyItMightNotBe": "Nothing. Same amount, same invoice date, same net reference once formatting is stripped."
    },
    {
      "amount": 2260,
      "payments": [
        "PAY-38112",
        "PAY-38119"
      ],
      "supplier": "Harbour Freight",
      "daysApart": 0,
      "mechanism": "rerun-batch",
      "confidence": "high",
      "controlGap": "A batch was rerun after a partial bank rejection. Nothing excluded the payments that had already succeeded.",
      "recoverability": "live-supplier",
      "whyItMightNotBe": ""
    },
    {
      "amount": 1450,
      "payments": [
        "PAY-29940",
        "PAY-31002"
      ],
      "supplier": "Meridian Print",
      "daysApart": 31,
      "mechanism": "exact-repeat",
      "confidence": "needs-checking",
      "controlGap": "",
      "recoverability": "live-supplier",
      "whyItMightNotBe": "Meridian bills a fixed monthly retainer at exactly this amount. This may be two legitimate months rather than a duplicate. Reported rather than filtered out, because a missed duplicate costs more than a check."
    }
  ],
  "supplierGroups": [
    "NORDVALE SUPPLIES LTD and Nordvale Supplies Limited share a tax identifier and bank account. Two records, one supplier — and every duplicate check ran within each record separately."
  ],
  "totalIdentified": 84200,
  "escalationReason": "One duplicate is 18,400, above threshold, and two supplier records share bank details without sharing a name.",
  "controlGapsSummary": [
    "Reference formatting is not normalised before the duplicate check, so 6 of 11 findings were invisible to it.",
    "The supplier master permits duplicate bank details.",
    "Payment batches can be rerun without excluding successful lines."
  ],
  "recoverableFromLiveSuppliers": 71400
}

Requirements

Integrations

No integrations required.

Before you start

  • Payment and invoice history: supplier, reference, amount, date, purchase order
  • The supplier master file
  • Credit notes and how they were applied
  • Requires the All-Access plan or higher

Use cases

Periodic AP review

Run over the last two years, then monthly.

After a system migration

Where duplicate supplier records are created wholesale.

Before an audit

The finding an auditor samples for, found first.

After a payment run failure

Whether the rerun duplicated the successful half.

Pricing

All-Access

Billed monthly through your PROMIVO subscription. Cancel at any time.

Runs consume your plan allowance for agent executions and tokens. See plan limits

FAQ

Will it claim the money back?

No. It never contacts a supplier or raises a claim. Asking for money back is a conversation with someone you depend on, and the tone belongs to a person.

How is this different from our AP system's duplicate check?

Those match exactly on invoice number and supplier. Real duplicates almost never match exactly — that is the entire reason they got through.

Will it produce false positives?

Some, deliberately. A legitimate recurring charge of the same amount to the same supplier looks like a duplicate, so it reports confidence and the reason rather than filtering them out silently. A missed duplicate costs more than one to check.

Reviews

Reviews open once customers have run this agent.

Need this agent to work differently?

Tell us what to change and our team will scope a customised version for your business.

Customize this agent