# Verification of Payee - Responder

## Service description <a href="#service-description" id="service-description"></a>

The VOP Responder Service enables other banks to request verification of creditor account details. To utilize this service, accounts must be synchronized with all mandatory VOP fields.

The documentation of account sync can be found [here](https://docs.lhv.com/home/connect/services/indirect-scheme-access/agency-account-synchronization#account-synchronization-v2).

Upon receiving a request, a notification is generated. If you would like to receive these notifications, please contact your relationship manager.

## Inbound VOP Request Notification

Incoming VOP Request Notification can be requested via the [Messages Services](https://docs.lhv.com/home/connect/services/messages).

{% hint style="info" %}
HTTP Header Message-Response-Type: VERIFICATION\_OF\_PAYEE\_INCOMING\_NOTIFICATION
{% endhint %}

### Body

<table><thead><tr><th width="354">Field</th><th width="77">M/O</th><th>Description</th></tr></thead><tbody><tr><td>Request.Data.Id</td><td>M</td><td>Name verification ID.</td></tr><tr><td>Request.Data.CreatedOn</td><td>M</td><td>Verification time.</td></tr><tr><td>Request.Data.Attributes.AccountNumber</td><td>M</td><td>Account number of the account to do a name verification on.</td></tr><tr><td>Request.Data.Attributes.AccountNumberCode</td><td>M</td><td>Type of the account number, always '<strong>IBAN</strong>'.</td></tr><tr><td>Request.Data.Attributes.BankId</td><td>M</td><td>BIC 8 or BIC 11 of the account to do a name verification on.</td></tr><tr><td>Request.Data.Attributes.BankIdCode</td><td>M</td><td>Type of bank ID, always '<strong>SWBIC</strong>'.</td></tr><tr><td>Request.Data.Attributes.Name</td><td>M</td><td>The name string to be checked for a match.</td></tr><tr><td>Request.Data.Attributes.RequestDtime</td><td>M</td><td>Request time.</td></tr><tr><td>Request.Data.Attributes.RequesterBankId</td><td>M</td><td>BIC 8 or BIC 11 of the requester of the name verification.</td></tr><tr><td>Response.Data.Attributes.Answer</td><td>O</td><td>Indicator if the verification has produced a (full) match or not. <strong>CONFIRMED</strong> in case of a full match, <strong>REJECTED</strong> otherwise. Not populated if request failed.</td></tr><tr><td>Response.Data.Attributes.ActualName</td><td>O</td><td>The actual name of the account holder. Only present in case of a close match</td></tr><tr><td>Response.Data.Attributes.Reason</td><td>O</td><td>Human-readable description of reason code . Only populated if reason code is.</td></tr><tr><td>Response.Data.Attributes.ReasonCode</td><td>O</td><td>Encoded reason for mismatch. Only populated if answer is rejected. <a href="#reason-code-values">Possible values</a>.</td></tr><tr><td>Response.Data.Attributes.Status</td><td>M</td><td>Admission status, indicates if the request has been successfully received from the counterparty and could be responded to. <strong>confirmed</strong> in case of success, <strong>failed</strong> otherwise.</td></tr></tbody></table>

## Examples

{% tabs %}
{% tab title="Full Match" %}

```json
{
    "Request": {
        "Data": [
            {
                "Attributes": {
                    "AccountNumber": "FR7610278067010002005307633",
                    "AccountNumberCode": "IBAN",
                    "BankId": "CCBPFRPPMTZ",
                    "BankIdCode": "SWBIC",
                    "Name": [
                        "Smith John"
                    ],
                    "RequestDtime": "2025-01-30T14:13:40.111Z",
                    "RequesterBankId":  "BNLIITRRXXX"
                },
                "CreatedOn": "2025-01-30T14:13:40.111Z",
                "Id": "4942f12c-5430-4d1b-8b56-c7f1c8a9118d"
            }
        ]
    },
    "Response": {
        "Data": {
            "Attributes": {
                "Answer": "CONFIRMED",
                "ActualName": "Smith John",
                "Reason": "It's a match. The account name and details match those on record.",
                "ReasonCode": "MTCH",
                "Status": "confirmed"
            }
        }
    }
}
```

{% endtab %}

{% tab title="Close Match" %}

<pre class="language-json"><code class="lang-json"><strong>{
</strong><strong>    "Request": {
</strong>        "Data": [
            {
                "Attributes": {
                    "AccountNumber": "FR7610278067010002005307633",
                    "AccountNumberCode": "IBAN",
                    "BankId": "CCBPFRPPMTZ",
                    "BankIdCode": "SWBIC",
                    "Name": [
                        "John Smith"
                    ],
                    "RequestDtime": "2025-01-30T14:13:40.111Z",
                    "RequesterBankId":  "BNLIITRRXXX"
                },
                "CreatedOn": "2025-01-30T14:13:40.111Z",
                "Id": "4942f12c-5430-4d1b-8b56-c7f1c8a9118d"
            }
        ]
    },
    "Response": {
        "Data": {
            "Attributes": {
                "Answer": "REJECTED",
                "ActualName": "Smith John",
                "Reason": "The name is a close match. The actual name on the account is (Smith John).",
                "ReasonCode": "CMTC",
                "Status": "confirmed"
            }
        }
    }
}
</code></pre>

{% endtab %}

{% tab title="No Match" %}

```json
{
    "Request": {
        "Data": [
            {
                "Attributes": {
                    "AccountNumber": "FR7610278067010002005307633",
                    "AccountNumberCode": "IBAN",
                    "BankId": "CCBPFRPPMTZ",
                    "BankIdCode": "SWBIC",
                    "Name": [
                        "Joe Bloggs"
                    ],
                    "RequestDtime": "2025-01-30T14:13:40.111Z",
                    "RequesterBankId":  "BNLIITRRXXX"
                },
                "CreatedOn": "2025-01-30T14:13:40.111Z",
                "Id": "4942f12c-5430-4d1b-8b56-c7f1c8a9118d"
            }
        ]
    },
    "Response": {
        "Data": {
            "Attributes": {
                "Answer": "REJECTED",
                "Reason": "The name you provided doesn't match the name for the account. You can still continue with the payment, but your money may be sent to the wrong account..",
                "ReasonCode": "NMTC",
                "Status": "confirmed"
            }
        }
    }
}
```

{% endtab %}
{% endtabs %}

## Example of the flow

<img src="https://2266620947-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHGywduAxJuxV3reZhASh%2Fuploads%2FMofPoCX7p6a1hYFBX4hO%2Ffile.excalidraw.svg?alt=media&#x26;token=0e5bf52d-ca38-4ea7-bc96-5f691efd5268" alt="Verification of Payee Responder" class="gitbook-drawing">

<table><thead><tr><th width="107">Step</th><th>Action</th><th>Description</th></tr></thead><tbody><tr><td>1.</td><td>Sync accounts with details required for Verification of Payee.</td><td>To utilize this service, accounts must be synchronized with all mandatory VOP fields. The documentation of account sync can be found <a href="../../indirect-scheme-access/agency-account-synchronization#account-synchronization-v2">here</a>. </td></tr><tr><td>2.</td><td>LHV will confirm the synchronization.</td><td>See possible error codes <a href="../../indirect-scheme-access/agency-account-synchronization#error-codes">here</a>.</td></tr><tr><td>3.</td><td>LHV receives inbound VOP Request.</td><td>LHV will receive inbound VOP Request from Debtor Party. </td></tr><tr><td>4.</td><td>LHV will provide notification of inbound VOP Request.</td><td>LHV will issue a notification regarding a previously received request. This notification will include details about both the request and response.</td></tr></tbody></table>

## Reason code values

| ReasonCode | Description                                                                                                                                                                                       |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| MTCH       | It's a match. The account name and details match those on record.                                                                                                                                 |
| NMTC       | The name you provided doesn't match the name for the account. You can still continue with the payment, but your money may be sent to the wrong account.                                           |
| CMTC       | The name is a close match. The actual name on the account is (...).                                                                                                                               |
| NOAP       | We are currently unable to verify the account details. You can either try again in a few minutes or continue your payment without verification. If you continue, please double check the details. |
