---
title: "Create Payee Verification"
method: POST
path: "/vop/verification"
tags: ["Verification of Payee"]
---

# Create Payee Verification

`POST /vop/verification`

## Request

- Base URL: `https://partner-api.getpliant.com/api`
- URL: `https://partner-api.getpliant.com/api/vop/verification`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/getpliant/apis/pliant-customer-api/docs/vop/verification/post.ts> (a function with typed inputs; its response is checked against the schema)

Verify that a bank account belongs to the named person or company before initiating a transfer.

This endpoint implements the **Verification of Payee (VoP)** name-check service, mandatory under the SEPA Instant Payments Regulation (IPR) for SCT and SCT Inst transfers since 9 October 2025. A real-time request is sent to the recipient's bank to compare the submitted account holder name against their records.

**Typical flow:**
1. Call this endpoint before creating an external transfer.
2. Inspect the `result.matchLevel` in the response and decide whether to proceed.
3. Attach the returned `verificationId` as `vopId` in the external transfer creation request.
4. Verifications are valid for **60 minutes** (`status: ACTIVE`). If re-verification is requested within that window, the same `verificationId` is returned.

**Match level guidance:**

| `matchLevel` | Meaning | Recommended action |
|---|---|---|
| `MATCH` | Name and IBAN align perfectly | Proceed with confidence |
| `CLOSE_MATCH` | Minor discrepancy (e.g. typo) | Review `result.accountHolder` for the suggested correct name |
| `NO_MATCH` | Name belongs to a different person | Abort — high fraud risk |
| `UNAVAILABLE` | Recipient bank unreachable or unsupported | Proceed with caution |

## Request body

- object
  - `accountHolder` string, required: The name of the account holder to verify against the recipient bank.
  - `type` 'VERIFICATION_OF_PAYEE', required: The type of verification to perform. Must be `VERIFICATION_OF_PAYEE`.
  - `vop` object, required: Payee account details for the verification.
    - `accountNumber` string, required: The IBAN of the payee account to verify.

## Response `200`

Ok

- object
  - `verificationId` string, uuid: Unique identifier of the payee verification. Use this value as `vopId` when initiating an external transfer.
  - `request` object: A flattened echo of the key fields from the original verification request. Note: this is a simplified read-only view — the `accountNumber` is returned directly here rather than nested under `vop` as in the request body.
    - `accountHolder` string: The account holder name as submitted by the client.
    - `accountNumber` string: The IBAN of the payee account.
  - `result` object, nullable: The verification result returned by the provider.
    - `accountHolder` string, nullable: The account holder name as known by the recipient bank.
    - `matchLevel` 'MATCH' | 'CLOSE_MATCH' | 'NO_MATCH' | 'UNAVAILABLE', nullable: The match level between the submitted name and the name on the account. * `MATCH` — Name and IBAN align perfectly. Proceed with confidence. * `CLOSE_MATCH` — Slight discrepancy (e.g. "Jon Doe" vs "John Doe"). The `result.accountHolder` contains the suggested correct name. * `NO_MATCH` — Name belongs to a different person. High fraud risk; advised to abort the transfer. * `UNAVAILABLE` — Recipient bank is unreachable or does not support VoP. Proceed with caution.
    - `resultDetails` string, nullable: Human-readable description of the match result.
  - `status` 'ACTIVE' | 'INACTIVE': Lifecycle status of the verification record. * `ACTIVE` — The verification is valid and can be referenced in a transfer (within 60 minutes of creation). * `INACTIVE` — The verification has expired or has already been consumed.
  - `activeUntil` string, date-time, nullable: The timestamp until which this verification is considered valid and can be attached to a transfer. Verifications expire 60 minutes after creation.
  - `createdAt` string, date-time: Timestamp when the verification was created.

## Other responses

- `400` (unresolved $ref)
- `401` (unresolved $ref)
- `403` (unresolved $ref)
- `422` (unresolved $ref)
- `429` (unresolved $ref)
- `500` (unresolved $ref)

## Changes

- **2026-11-03** `a4fbf7d068b4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getpliant/apis/pliant-customer-api/changes/vop/verification/post.md)

---

[API](https://skmtc.dev/getpliant/apis/pliant-customer-api.md) - [All operations](https://skmtc.dev/getpliant/apis/pliant-customer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getpliant/apis/pliant-customer-api/revisions/a4fbf7d068b4?raw)
