Skip to content

Integration  ·  Finance

How to build a vendor master sync

The same supplier exists three times under slightly different names and one of them has bank details nobody verified. The shape of a clean vendor master, the prompts that build it, and the production detail that decides whether it holds.

Built with Tray Headless

  1. System Onboarding form
  2. Step Duplicate check
  3. Step Verify identity
  4. Step Bank change: out of band
  5. System NetSuite
Also Coupa

Bank detail changes always verify out of band, because that request is the most common invoice fraud there is.

The short answer

What is a vendor master sync?

There are four parts to a vendor master sync: one record per legal entity instead of per relationship, duplicate detection at onboarding instead of cleanup afterwards, verification of bank details out of band every time they change, and a single record propagated to every system that pays or orders. Teams usually come unstuck on bank detail changes. A request to update payment details is the most common invoice fraud there is, and treating it as a routine data change is how a company pays a stranger.

What matters here

  • Verify every bank detail change out of band, by calling a number you already held. This is the highest-value control in the whole workflow.
  • Detect duplicates at onboarding, not in a cleanup project. A duplicate supplier is how the same invoice gets paid twice.
  • Key on the legal entity, not the trading name. One company can trade under four names and still be one payee.
  • Screen against sanctions and match tax registration before the first payment, not before the first order.
  • Report vendors with no spend in a year. A dormant vendor with live bank details is an attack surface.

Who this is for

You run finance systems or procurement operations. Suppliers are created ad hoc, the master has duplicates nobody has time to merge, and bank details are updated by email.

How it works in practice

What happens between needing a new supplier and being able to pay them safely.

  1. 1

    Onboarding is one route with the fields payment needs

    Legal name, registration number, tax id, address and remittance details.

  2. 2

    Duplicates are checked before anything is created

    On registration number, tax id and normalised name, because cleanup afterwards never happens.

  3. 3

    Identity and compliance are checked before first payment

    Registry match, tax validation and sanctions screening.

  4. 4

    Bank details are verified out of band, always

    A call to a number already on file, never a number supplied in the request.

  5. 5

    One record propagates to every system

    Procurement, ERP and payments read the same vendor rather than each holding their own.

  6. 6

    Changes to payment details are treated as events

    Re-verified, recorded, and notified, never applied as a routine field update.

What a vendor master is made of

Four pieces, and the third is a fraud control rather than a data one.

One record per legal entity

Keyed on registration number where one exists. Trading names, divisions and purchase orders all attach to it instead of creating their own.

Duplicate detection at onboarding

Before creation, on registration number, tax id and normalised name. Nobody has ever completed the cleanup project.

Out-of-band bank verification

Every change, verified by calling a number already held. This single control prevents the most common invoice fraud there is.

Single propagation

Procurement, ERP and payments read one record. Three masters means three sets of bank details and one of them is wrong.

The Tray Headless prompts

Paste these into Claude Code or Codex with the Tray Headless plugin installed. Each stage runs on its own. The systems named in them are the worked example rather than a requirement, and every prompt says so.

Once per project, run /tray-workflows:set-workspace to pick the workspace these build in. Point it at a sandbox first.

  1. 1

    First, find every place a vendor exists

    There are usually more masters than anybody admits.

    Headless skills build-workflow

    Use build-workflow. The systems in play are NetSuite and Coupa, or
    whatever we run in those seats.
    
    I need the vendor record in each: which fields exist, which are mandatory,
    where bank details live and who can change them, and how each system
    identifies a vendor.
    
    Then tell me how many vendors exist in each and how much they overlap.
    There are usually more masters than anybody admits, and each extra one is
    another place bank details can be wrong.
  2. 2

    Onboard once, and check for duplicates first

    Because the cleanup project never happens.

    Headless skills build-workflow

    Use build-workflow. One onboarding route, asking for what payment
    actually needs: legal entity name, company registration number, tax
    registration, registered address, remittance address, contact, and
    payment terms.
    
    Before creating anything, check for duplicates:
    
      Exact on company registration number, which is definitive
      Exact on tax registration
      Normalised legal name plus country, with legal suffixes stripped
      Bank account number, which catches a supplier onboarded twice under
      different names
    
    Above a confidence threshold, block and show the existing vendor. Between
    thresholds, route to a person.
    
    Key the master on the legal entity. One company trading under four names
    is one payee, and treating each name as a vendor is how the same invoice
    gets paid twice.
  3. 3

    Verify identity and compliance before the first payment

    Before payment, not before the first order.

    Before a vendor can be paid, not merely created:
    
      Validate the registration number against the company registry where an
      API exists
      Validate the tax registration format and check it where possible
      Screen the entity and its known officers against sanctions lists
      Check whether the vendor is already an employee, by matching bank
      details and addresses against payroll, which catches a specific and
      recurring fraud
    
    Record every check with its result and date. A vendor that passed
    screening two years ago has not been screened, and re-screening on a
    schedule is the difference between a control and a formality.
  4. 4

    Treat a bank detail change as an event, never a field update

    This is the highest-value control in the workflow.

    Headless skills tray-gotchas

    Use tray-gotchas, then handle bank detail changes as their own process:
    
      Never apply a change from an email or an attachment
      Verify by calling a number already held on the vendor record, never a
      number supplied in the request
      Require a second approver
      Notify the previous contact on file that details were changed
      Hold all payments to that vendor for a short period after any change
      Record who requested, who verified, who approved, and how
    
    A request to change payment details is the most common invoice fraud
    there is, and it usually arrives as a plausible email from a real
    supplier domain during a busy week.
    
    Every one of those steps exists because a company somewhere skipped it.
  5. 5

    Propagate one record, and prune the dormant ones

    A dormant vendor with live bank details is an attack surface.

    Headless skills tray-patterns

    Propagate the vendor to every system that orders or pays, with the master
    id carried on each, so a reconciliation compares records instead of 
    names.
    
    Reconcile nightly: vendors in one system and not another, bank details
    that differ between systems, and any vendor created directly in a
    downstream system bypassing onboarding. That last one should be zero and
    rarely is.
    
    Then report: duplicates prevented at onboarding, bank changes and how
    each was verified, vendors with no spend in twelve months, and vendors
    that failed re-screening.
    
    Deactivate the dormant ones. A vendor nobody pays, with live bank details
    and no owner watching it, is an attack surface rather than a record.
  6. 6

    Validate, then hand the controls to finance

    Because verification thresholds are a finance policy.

    Run the per-step schema checks and the whole-workflow audit before this
    touches production.
    
    Then open the same workflow in Tray Build so finance systems can adjust
    the duplicate thresholds, the verification requirements and the
    re-screening cadence in the visual canvas.

What it connects to

One vendor record has to reach everywhere that orders or pays.

NetSuite

Create and maintain the vendor with its payment details, usually the system of record for paying anybody.

Reads and writes

Coupa

Propagate the same vendor to procurement, so a purchase order and an invoice reference one entity.

Reads and writes

DocuSign

Take the signed supplier agreement and the bank detail confirmation, so verification has a document behind it.

Reads

Slack

Route the second approval on a bank change, and alert on a vendor created outside onboarding.

Writes

Okta

Resolve the requester and approver, so a bank change is attributable to two named people.

Reads

Snowflake

Land vendor history and every verification, so an audit of a payment change is a query.

Writes

Same build, other stacks

The design does not change if you run something else in one of these seats. The same prompts build it against SAP S/4HANA, Google BigQuery, Microsoft Teams, Azure Active Directory, Oracle or Databricks.

Named systems are the ones most teams run, not the only ones that work. Each is an authentication in your Tray workspace, referenced by name, so the workflow never holds a credential. Where we have a connector page, the name links to it.

Running it in production

This holds the bank details a company pays into. It is a fraud control before it is a data project.

The platform runs it, not a laptop under a desk

Duplicate checks at onboarding, nightly reconciliation and scheduled re-screening run on the same engine with a full history.

Every bank change is evidence

Who requested, who verified, by which method and against which number already held. That record is what a fraud investigation needs.

Credentials are held by the platform, never hardcoded

This workflow can change where money is sent. Its credentials are scoped narrowly, held in your workspace, and rotated on their own schedule.

Finance owns the thresholds

Duplicate confidence, verification requirements and re-screening cadence open in Tray Build, owned by the team accountable for payments.

Payments hold after any change

A short hold on all payments to a vendor whose details changed. It costs a day and it has stopped a great many frauds.

Questions people ask

Why verify bank changes out of band?

Because a request to change payment details is the most common invoice fraud there is. It arrives as a plausible email from a real supplier domain, and calling a number already on file is what stops it.

Why key on the legal entity?

Because one company can trade under four names and remain one payee. Treating each trading name as its own vendor is how the same invoice gets paid twice by two different people.

When should duplicates be detected?

At onboarding, before the record exists. The cleanup project everybody plans afterwards has never once been completed, and every duplicate is a duplicate payment waiting to happen.

What about dormant vendors?

Deactivate them. A vendor with no spend in a year, live bank details and nobody watching it is an attack surface rather than a record.

Should a vendor be creatable directly in the ERP?

No, and the count of vendors created outside onboarding should be reported. It is rarely zero, and each one skipped every control this workflow exists to apply.

Vibe-coding app guides

Vibe-code an entire app with Helix

This moves the data between systems. It does not give anybody a screen to work in. Build that app in Claude Code, Codex or Cursor, then deploy and run it governed on Tray Helix. Same kind of guide, same kind of prompts.

How to build a vendor security review tracker (opens helix.tray.ai in a new tab)

Last reviewed September 2026.