Skip to main content
vendor_data is the identifier you supply on every session and transaction to link it to a User or Business entity. It is the single most important field for entity aggregation — get it right and every downstream feature (profile history, transaction monitoring, blocklist enforcement, ongoing AML) works seamlessly.

What it is

vendor_data is a string you choose. Didit treats it as an opaque identifier and does not interpret its contents. Typical values:
Do not put PII (emails, phone numbers, raw tax IDs) directly in vendor_data. Hash or prefix them. vendor_data appears in webhook payloads and is persisted indefinitely while the entity exists.

How it binds things together

When you submit a session or transaction with a vendor_data value:
  1. Didit looks up the entity in your application with that vendor_data.
  2. If it exists, the new object is linked to that entity.
  3. If it does not exist, Didit creates the entity (with status: ACTIVE) and links the new object.
This is true for:
  • POST /v3/session/ — KYC and Business Verification (KYB) sessions
  • POST /v3/transactions/ — transactions (for both applicant and counterparty)
  • The applicant.vendor_data / counterparty.vendor_data fields inside transaction payloads

Uniqueness and scope

vendor_data is unique per application, not globally across Didit: This means you can use the same vendor_data in a staging app and a production app without collisions, and you can have a User user-42 and a Business user-42 without collision (though this is discouraged for clarity).

What happens if you omit vendor_data

You can create a session without vendor_data. In that case:
  • No entity is created for the session.
  • The session is orphaned — it won’t appear in any User or Business profile.
  • You cannot later look up the session by vendor_data — only by session_id.
Use this pattern only for anonymous or one-off verifications where no entity aggregation is needed. For every integration that involves re-verification, transactions, or ongoing monitoring, always provide vendor_data.

Example: pre-create an entity, then run sessions

All three calls are linked to the same User entity. When you later GET /v3/users/user-42/, you’ll see the session count, approved/declined counters, linked transactions, and latest profile data.

Migrating external IDs

If you’re adopting Didit after an existing KYC vendor, pass your existing stable user IDs as vendor_data from day one. This makes it easy to:
  • Reconcile Didit data with your internal database.
  • Bulk-load historical users via console CSV import before running any sessions.
  • Preserve relationships when you later migrate to Didit for transaction monitoring.

Rules, conventions, and best practices

Next steps

Users overview

Deep dive on User entities and operations.

Businesses overview

Deep dive on Business entities and operations.

Create session

Start a verification for a vendor_data.

Create transaction

Submit a transaction linked to an entity.