> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.withverifa.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.withverifa.com/_mcp/server.

# Marketplace Trust & Safety

> Verify sellers, service providers, and high-value buyers on your platform.

Marketplaces and platforms face a unique challenge: you need to verify both sides
of a transaction — sellers, service providers, landlords, drivers, or any user
who interacts with others on your platform. Verifa gives you the tools to verify
identities, screen against watchlists, detect duplicates, and build trust across
your platform.

## Common marketplace verification scenarios

| Scenario                          | Checks to add to your workflow                                   |
| --------------------------------- | ---------------------------------------------------------------- |
| **Seller onboarding**             | Document Scan + Face Match + AML Screening + Duplicate Detection |
| **Service provider verification** | Document Scan + Face Match + Address Validation + Phone Risk     |
| **High-value buyer verification** | Document Scan + Face Match + Email Risk                          |
| **Age-gated marketplace**         | Document Scan + Face Match + Age Verification                    |

Watchlist screening, risk assessment, and identity cross-reference run
automatically on every session — you don't need to add them.

## Implementation

### Verify a seller at onboarding

#### cURL

```bash
curl -X POST https://api.withverifa.com/api/v1/sessions \
  -H "X-API-Key: vk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "external_ref": "seller_abc123",
    "country": "US",
    "workflow_id": "wf_seller_onboarding",
    "metadata": {
      "user_type": "seller",
      "store_name": "Jane Electronics"
    }
  }'
```

#### Python

```python
import requests

session = requests.post(
    "https://api.withverifa.com/api/v1/sessions",
    headers={"X-API-Key": "vk_live_your_key_here"},
    json={
        "external_ref": "seller_abc123",
        "country": "US",
        "workflow_id": "wf_seller_onboarding",
        "metadata": {
            "user_type": "seller",
            "store_name": "Jane Electronics",
        },
    },
).json()

# Redirect user to session["capture_url"]
```

#### JavaScript

```javascript
const session = await fetch('https://api.withverifa.com/api/v1/sessions', {
  method: 'POST',
  headers: {
    'X-API-Key': 'vk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    external_ref: 'seller_abc123',
    country: 'US',
    workflow_id: 'wf_seller_onboarding',
    metadata: {
      user_type: 'seller',
      store_name: 'Jane Electronics',
    },
  }),
}).then(r => r.json());

// Redirect user to session.capture_url
```

> **Tip**
>
> Always include an `external_ref` (your internal user ID) when creating sessions.
> Verifa automatically creates an identity record when the session completes,
> linking the verified data to that reference. This enables duplicate detection,
> re-verification, and continuous monitoring.

## Preventing duplicate accounts

Fraudulent sellers often create multiple accounts after being banned. Add
**Duplicate Detection** to your workflow to catch this. It compares:

* **Device fingerprint** — Same browser or device
* **Face embedding** — Same person, different name
* **Document number** — Same ID document
* **Email / phone** — Reused contact details

When a duplicate is detected, the session is routed to manual review.

### Custom blocklists

Maintain a list of banned users and match new signups against it. Add
**List Check** to your workflow to enable matching.

```bash
# Create a blocklist
curl -X POST https://api.withverifa.com/api/v1/lists \
  -H "X-API-Key: vk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Banned Sellers",
    "type": "block",
    "match_fields": ["email", "phone", "document_number", "device_fingerprint"]
  }'
```

## Recommended workflow: seller onboarding

Build this workflow in the dashboard using the visual workflow builder:

```
Capture → Document Scan → Face Match → AML Screening
  → Duplicate Detection → Auto-Approve
```

Watchlist screening and risk assessment run automatically on top of this. Use
conditional nodes to route high-risk sessions to manual review.

See the [Creating a Workflow tutorial](/tutorials/creating-a-workflow) for a
step-by-step walkthrough.

## Embedding verification in your platform

Use verifa.js to verify users without leaving your marketplace:

```html
<script src="https://app.withverifa.com/static/verifa.js"></script>
<script>
  async function verifySeller() {
    // Your backend creates the session
    const res = await fetch('/api/verify-seller', { method: 'POST' });
    const session = await res.json();

    Verifa.open({
      captureUrl: session.capture_url,
      sessionId: session.id,
      mode: 'modal',
      onComplete: (data) => {
        // Update seller badge / unlock selling
        window.location.reload();
      }
    });
  }
</script>
```

## Trust signals for your users

Once a seller or provider is verified, display trust indicators:

* **Verified badge** — Show that the user has completed identity verification
* **Verification date** — When they were last verified
* **Screening status** — Confirm they passed AML screening

Retrieve this from the identity record (automatically created when the session
completed):

```bash
curl https://api.withverifa.com/api/v1/identities?external_ref=seller_abc123 \
  -H "X-API-Key: vk_live_your_key_here"
```

## Platform-specific considerations

### Multi-sided verification

Create different workflows for different user types. Use the `metadata` field to
tag the user type, then use different `workflow_id` values:

* `wf_seller_onboarding` — Full verification with AML + duplicate detection
* `wf_buyer_verification` — Lighter check with document + face match only
* `wf_provider_verification` — Full verification + address + phone risk

### Re-verification

For periodic re-verification or when suspicious activity is detected, create a
new session with the same `external_ref`. Verifa links it to the existing
identity automatically:

```bash
curl -X POST https://api.withverifa.com/api/v1/sessions \
  -H "X-API-Key: vk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "external_ref": "seller_abc123",
    "country": "US",
    "workflow_id": "wf_seller_onboarding"
  }'
```

### International platforms

Verifa supports documents from 100+ countries. Set the `country` field to
optimize OCR accuracy, or omit it to let Verifa auto-detect the document origin.

### Webhook-driven activation

Use webhooks to automatically activate or flag accounts:

```json
{
  "event": "session.approved",
  "created_at": "2026-02-01T12:05:00Z",
  "idempotency_key": "idk_a1b2c3d4e5f6...",
  "data": {
    "session_id": "session_abc123",
    "external_ref": "seller_abc123",
    "status": "approved",
    "is_sandbox": false
  }
}
```

## Related

* [Tutorial: Creating a Workflow](/tutorials/creating-a-workflow) — Build a workflow step by step
* [Quickstart](/getting-started/quickstart) — Create your first session in 5 minutes
* [Identities](/core-concepts/identities) — How identity records work
* [Lists](/core-concepts/lists) — Custom blocklists for banned users
* [Fraud Signals](/best-practices/fraud-signals) — 150+ signals for fraud detection
* [Webhooks Guide](/integration-guides/webhooks-guide) — Automate account activation
* [JavaScript SDK](/integration-guides/java-script-sdk) — Embed verification in your UI