# Virtual IBANs

### Introduction

A Virtual IBAN (vIBAN) operate as routing identifiers within a two-tier account structure, where master IBANs maintain actual balances while virtual IBANs serve as payment reception endpoints. Incoming payments directed to virtual IBANs are automatically routed to the associated master IBAN. The virtual IBAN reference and associated metadata are preserved throughout the transaction flow and appear in master account statements. Virtual IBANs maintain zero balances and function exclusively for payment reception and routing.

To subscribe to the vIBAN product, contact GuruPay client care team at <clientcare@gurupay.eu>.

### Core Concepts

GuruPay implements vIBANs using a two-tier account structure:

```
          ┌──────────────────────┐
          │  Virtual IBAN A      │
Customer ─┤  Virtual IBAN B      ├──► Master IBAN (real balance)
          │  Virtual IBAN C      │
          └──────────────────────┘
```

* **Master IBAN**\
  Holds the actual virtual accounts balance.
* **Virtual IBANs**\
  Hold *no balance*, serve as routing endpoints, and forward all funds to the master IBAN.

All metadata (vIBAN reference, owner information, etc.) is preserved in master account statements.

### vIBAN Capabilities

| Feature / Capability                | Supported | Notes                                                                    |
| ----------------------------------- | --------- | ------------------------------------------------------------------------ |
| Receive payments                    | ✔         | Payments routed automatically to master IBAN with metadata preserved.    |
| Send payments “from” a vIBAN        | ✔         | Funds deducted from master IBAN; recipient sees vIBAN sender info.       |
| Zero-balance vIBAN model            | ✔         | vIBANs never hold funds; all balances reside in master account.          |
| Webhook-based asynchronous creation | ✔         | 201 returned immediately; webhook sent when vIBAN becomes active.        |
| Echo Service (Sandbox-only)         | ✔         | Requires SEPA Instant **only for testing**, not a production capability. |

### Virtual IBAN Creation

Before creating vIBANs, you need to identify your master IBAN's UUID.

Use the following endpoint to retrieve a list of all accounts.

**Endpoint**

```
GET /api/v1/customers/{customer_uuid}/accounts
```

In the response, look for:

* `"account_type": "virtual_parent"`
* This account’s `"uuid"` is your **master\_account\_uuid.**

{% hint style="info" %}
More information about retrieving account details can be found in our [Accounts | Documentation](https://developers.gurupay.eu/api-reference/accounts)&#x20;
{% endhint %}

vIBAN creation is **asynchronous**:

1. API returns `201 Created` immediately with a status `WAITING_FOR_APPROVAL`.
2. Requests are approved automatically by default. In some cases, additional compliance checks may be required, and the request may be placed in a review queue.&#x20;
3. Once virtual account creation or review is completed, the webhook sends the final status `CREATED` or `REJECTED`
4. When the new virtual account is created, the webhook will contain new vIBAN details.

{% content-ref url="/pages/odVIQK6RkDj7TsZzLSNR" %}
[Account Event](/webhooks/events/account-event.md)
{% endcontent-ref %}

{% hint style="warning" %}
**Important:** Set up webhook handling to receive the account creation confirmation.
{% endhint %}

## Create virtual account

> Create new virtual account

```json
{"openapi":"3.0.0","info":{"title":"GURUPAY API","version":"0.2.0"},"tags":[{"name":"Accounts","description":"Services intended to work with customer accounts."}],"servers":[{"url":"https://public-api.gurupay.eu","description":"Production API Server"},{"url":"https://public-api-dev.gurupay.eu","description":"Sandbox API Server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","description":"Authentication using a Bearer token.","name":"Authorization","in":"header","bearerFormat":"JWT","scheme":"bearer"}},"schemas":{"UUID":{"description":"Universally Unique Identifier (UUID) as defined by RFC 4122.","type":"string","format":"uuid","pattern":"^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$"},"API.Requests.CreateVirtualAccount":{"title":"Create virtual account request","description":"Data required to create a new virtual account.","required":["master_account_uuid","person_type","address"],"properties":{"master_account_uuid":{"description":"The UUID of the master account.","type":"string","format":"uuid"},"person_type":{"description":"Person legal type: legal or natural","type":"string","enum":["legal","natural"]},"external_id":{"description":"External ID to be used to track virtual IBAN","type":"string"},"person":{"description":"Person details. Required if person type is natural","properties":{"first_name":{"description":"Account holder name.","type":"string"},"last_name":{"description":"Account holder last name.","type":"string"},"date_of_birth":{"description":"Account holder date of birth.","type":"string"},"citizenship":{"description":"Country code of citizenship","type":"string"},"address":{"description":"Residency address details.","required":["line","city","country","postal_code"],"properties":{"line":{"description":"Address line.","type":"string"},"city":{"description":"City.","type":"string"},"country":{"description":"Country code.","type":"string"},"postal_code":{"description":"Postal code.","type":"string"}},"type":"object"}},"type":"object"},"company":{"description":"Company details. Required if person type is legal","properties":{"company_name":{"description":"Company name.","type":"string"},"registration_code":{"description":"Company registration code","type":"string"},"industry_type":{"description":"Industry type identifier.","oneOf":[{"description":"Luxury Goods","type":"integer","enum":[1]},{"description":"Agriculture","type":"integer","enum":[2]},{"description":"Commerce","type":"integer","enum":[3]},{"description":"Construction & Real Estate","type":"integer","enum":[4]},{"description":"Financial & Professional Services","type":"integer","enum":[5]},{"description":"Hospitality & Tourism","type":"integer","enum":[6]},{"description":"Mining","type":"integer","enum":[7]},{"description":"Media, Marketing & IT","type":"integer","enum":[8]},{"description":"Oil & Gas","type":"integer","enum":[9]},{"description":"Postal & Telecommunications","type":"integer","enum":[10]},{"description":"Education & Public Service","type":"integer","enum":[11]},{"description":"Shipping & Logistics","type":"integer","enum":[12]},{"description":"Financial Activities","type":"integer","enum":[13]},{"description":"Gambling & Betting","type":"integer","enum":[14]},{"description":"Investment Dealers","type":"integer","enum":[15]},{"description":"Virtual Currency","type":"integer","enum":[16]},{"description":"Natural Person","type":"integer","enum":[17]},{"description":"Accumulation Account","type":"integer","enum":[18]},{"description":"Foundation / Trust","type":"integer","enum":[19]},{"description":"Holding Company","type":"integer","enum":[20]}]},"address":{"description":"Registration address details.","required":["line","city","country","postal_code"],"properties":{"line":{"description":"Address line.","type":"string"},"city":{"description":"City.","type":"string"},"country":{"description":"Country code.","type":"string"},"postal_code":{"description":"Postal code.","type":"string"}},"type":"object"}},"type":"object"}},"type":"object"},"API.Resources.VirtualAccountCreateResponse":{"title":"Virtual Account Create Response","description":"Response returned after a virtual IBAN creation request is accepted by Public API.","required":["uuid","status"],"properties":{"uuid":{"description":"Public API UUID of the virtual account request. This UUID is later reused in webhook payloads and, after approval, becomes the Public API account UUID.","type":"string","format":"uuid"},"status":{"description":"Initial Public API status of the virtual account request.","type":"string","enum":["WAITING_FOR_APPROVAL","ACTIVE","REJECTED"]}},"type":"object"},"UnauthenticatedResponse":{"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}}},"type":"object"},"ValidationResponse":{"title":"Validation Error Response","description":"Standard response format for validation errors (HTTP 422).","required":["status","status_code","message","errors"],"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"description":"An object containing validation errors. Keys are field names, values are arrays of error messages for that field.","type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"type":"object"}}},"paths":{"/api/v1/customers/{customer_uuid}/accounts/open/virtual":{"post":{"tags":["Accounts"],"summary":"Create virtual account","description":"Create new virtual account","operationId":"API.Accounts.CreateVirtual","parameters":[{"name":"customer_uuid","in":"path","description":"The unique identifier (UUID) of the customer.","required":true,"schema":{"$ref":"#/components/schemas/UUID"}}],"requestBody":{"description":"Account details necessary to create a virtual account","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/API.Requests.CreateVirtualAccount"}}}},"responses":{"201":{"description":"Virtual account creation has been initiated. Returns the Public API UUID and initial request status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/API.Resources.VirtualAccountCreateResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthenticatedResponse"}}}},"422":{"description":"Unprocessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResponse"}}}}}}}}}
```

### Retrieve Virtual IBAN Details

Retrieve full information about your newly created vIBAN so you can begin receiving payments, initiating outgoing transfers, and managing the account lifecycle.

**Endpoint**

```
GET /api/v1/customers/{customer_uuid}/accounts
```

The response will list all your accounts. Look for:

* `"account_type": "virtual"` &#x20;
* `"status": "created"`
* `"iban"` — share with customers.
* `"uuid"` — store for management.
* `parent_uuid` — links to your master account.

{% hint style="info" %}
More information about retrieving account details can be found in our [Accounts | Documentation](https://developers.gurupay.eu/api-reference/accounts)&#x20;
{% endhint %}

### Receiving Payments <a href="#step-4-receiving-payments" id="step-4-receiving-payments"></a>

Once your vIBAN is active, payments work automatically:

1. **Customer sends payment** to your vIBAN.
2. **GuruPay routes payment** to your master IBAN instantly.
3. **Balance** always shows 0.00  as funds route to your master IBAN balance.
4. **Transaction details** include vIBAN reference for easy identification.

{% hint style="info" %}
For more details regarding receiving payment, refer to [Webhook Messages | Documentation](https://developers.gurupay.eu/api-reference/webhook-messages) and [Transactions | Documentation](https://developers.gurupay.eu/getting-started/guides/transactions)
{% endhint %}

### Sending Payments  <a href="#step-6-sending-payments-from-vibans" id="step-6-sending-payments-from-vibans"></a>

You can initiate outgoing payments directly from your vIBANs using the GuruPay API. When you send a payment from a vIBAN, the funds are deducted from your master account while the payment appears to originate from the vIBAN.

**Endpoint**

```
POST /api/v1/transactions
```

**Payment Flow:**

1. You initiate a payment using vIBAN as the sender.
2. Funds are deducted from the linked master account balance.
3. Payment is sent with vIBAN owner information as the sender.
4. Recipient sees the vIBAN details (not your master account).

{% hint style="info" %}
The payment initiation process follows the same structure as standard payment initiation in the GuruPay API. Refer to the public API documentation for detailed endpoint specifications and request parameters. More information can be found at [Transactions | Documentation](https://developers.gurupay.eu/api-reference/transactions#post-api-v1-transactions)
{% endhint %}

**Key Parameters:**

* **Sender Account:** Use your vIBAN UUID.
* **Funds Source:** Automatically deducted from master account.
* **Sender Information:** vIBAN owner details (as registered).<br>

### Blocking Virtual IBAN

Blocking a virtual IBAN places it into a non-operational state.

When a vIBAN is blocked, its status is set to `disabled`. Blocking applies as a full block, and all incoming and outgoing payments to the vIBAN are rejected, as the IBAN is blocked.

Blocked vIBANs remain visible and are returned in GET IBAN details endpoints.

## Block virtual account

> Block virtual account

```json
{"openapi":"3.0.0","info":{"title":"GURUPAY API","version":"0.2.0"},"tags":[{"name":"Accounts","description":"Services intended to work with customer accounts."}],"servers":[{"url":"https://public-api.gurupay.eu","description":"Production API Server"},{"url":"https://public-api-dev.gurupay.eu","description":"Sandbox API Server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","description":"Authentication using a Bearer token.","name":"Authorization","in":"header","bearerFormat":"JWT","scheme":"bearer"}},"schemas":{"UUID":{"description":"Universally Unique Identifier (UUID) as defined by RFC 4122.","type":"string","format":"uuid","pattern":"^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$"},"API.Requests.BlockVirtualAccount":{"title":"Block virtual account request","description":"Data required to block virtual account.","required":["master_account_uuid","name","person_type","address"],"properties":{"virtual_account_uuid":{"description":"The UUID of the virtual account.","type":"string","format":"uuid"}},"type":"object"},"ValidationResponse":{"title":"Validation Error Response","description":"Standard response format for validation errors (HTTP 422).","required":["status","status_code","message","errors"],"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"description":"An object containing validation errors. Keys are field names, values are arrays of error messages for that field.","type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"type":"object"},"UnauthenticatedResponse":{"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}}},"type":"object"}}},"paths":{"/api/v1/customers/{customer_uuid}/accounts/block/virtual":{"post":{"tags":["Accounts"],"summary":"Block virtual account","description":"Block virtual account","operationId":"API.Accounts.BlockVirtual","parameters":[{"name":"customer_uuid","in":"path","description":"The unique identifier (UUID) of the customer.","required":true,"schema":{"$ref":"#/components/schemas/UUID"}}],"requestBody":{"description":"Account details necessary to block a virtual account","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/API.Requests.BlockVirtualAccount"}}}},"responses":{"200":{"description":"Block virtual account has been initiated."},"400":{"description":"Unprocessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthenticatedResponse"}}}}}}}}}
```

### Unblocking Virtual IBAN

Unblocking a virtual IBAN returns it to an operational state.

When a vIBAN is unblocked, its status is set to `created` .The vIBAN becomes fully operational, and all incoming and outgoing payment operations function normally.

API users can only unblock vIBANs that they previously blocked themselves. vIBANs blocked by other parties cannot be unblocked via the API.

## Unblock a virtual account

> Unblock a virtual account

```json
{"openapi":"3.0.0","info":{"title":"GURUPAY API","version":"0.2.0"},"tags":[{"name":"Accounts","description":"Services intended to work with customer accounts."}],"servers":[{"url":"https://public-api.gurupay.eu","description":"Production API Server"},{"url":"https://public-api-dev.gurupay.eu","description":"Sandbox API Server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","description":"Authentication using a Bearer token.","name":"Authorization","in":"header","bearerFormat":"JWT","scheme":"bearer"}},"schemas":{"UUID":{"description":"Universally Unique Identifier (UUID) as defined by RFC 4122.","type":"string","format":"uuid","pattern":"^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$"},"API.Requests.UnblockVirtualAccount":{"title":"Unblock virtual account request","description":"Data required to unblock virtual account.","required":["master_account_uuid","name","person_type","address"],"properties":{"virtual_account_uuid":{"description":"The UUID of the virtual account.","type":"string","format":"uuid"}},"type":"object"},"ValidationResponse":{"title":"Validation Error Response","description":"Standard response format for validation errors (HTTP 422).","required":["status","status_code","message","errors"],"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"description":"An object containing validation errors. Keys are field names, values are arrays of error messages for that field.","type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"type":"object"},"UnauthenticatedResponse":{"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}}},"type":"object"}}},"paths":{"/api/v1/customers/{customer_uuid}/accounts/unblock/virtual":{"post":{"tags":["Accounts"],"summary":"Unblock a virtual account","description":"Unblock a virtual account","operationId":"API.Accounts.UnblockVirtual","parameters":[{"name":"customer_uuid","in":"path","description":"The unique identifier (UUID) of the customer.","required":true,"schema":{"$ref":"#/components/schemas/UUID"}}],"requestBody":{"description":"Account details necessary to unblock a virtual account","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/API.Requests.UnblockVirtualAccount"}}}},"responses":{"200":{"description":"Unblock virtual account has been initiated."},"400":{"description":"Unprocessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthenticatedResponse"}}}}}}}}}
```

### Closing Virtual IBAN

When you request to close a vIBAN, the API immediately returns a **201 Accepted** response while the closure is processed asynchronously. Once closed, the vIBAN stops accepting incoming payments, and any future transfers to it will be rejected. The vIBAN cannot be reactivated, but all historical transaction data remains available for reporting and reconciliation.

{% hint style="warning" %}
**Warning:** Once closed, the vIBAN cannot be reactivated. Create a new one if needed.
{% endhint %}

## Close virtual account

> Close virtual account

```json
{"openapi":"3.0.0","info":{"title":"GURUPAY API","version":"0.2.0"},"tags":[{"name":"Accounts","description":"Services intended to work with customer accounts."}],"servers":[{"url":"https://public-api.gurupay.eu","description":"Production API Server"},{"url":"https://public-api-dev.gurupay.eu","description":"Sandbox API Server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","description":"Authentication using a Bearer token.","name":"Authorization","in":"header","bearerFormat":"JWT","scheme":"bearer"}},"schemas":{"UUID":{"description":"Universally Unique Identifier (UUID) as defined by RFC 4122.","type":"string","format":"uuid","pattern":"^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$"},"API.Requests.CloseVirtualAccount":{"title":"Close virtual account request","description":"Data required to close virtual account.","required":["master_account_uuid","name","person_type","address"],"properties":{"virtual_account_uuid":{"description":"The UUID of the virtual account.","type":"string","format":"uuid"}},"type":"object"},"UnauthenticatedResponse":{"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}}},"type":"object"},"ValidationResponse":{"title":"Validation Error Response","description":"Standard response format for validation errors (HTTP 422).","required":["status","status_code","message","errors"],"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"description":"An object containing validation errors. Keys are field names, values are arrays of error messages for that field.","type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"type":"object"}}},"paths":{"/api/v1/customers/{customer_uuid}/accounts/close/virtual":{"post":{"tags":["Accounts"],"summary":"Close virtual account","description":"Close virtual account","operationId":"API.Accounts.CloseVirtual","parameters":[{"name":"customer_uuid","in":"path","description":"The unique identifier (UUID) of the customer.","required":true,"schema":{"$ref":"#/components/schemas/UUID"}}],"requestBody":{"description":"Account details necessary to close a virtual account","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/API.Requests.CloseVirtualAccount"}}}},"responses":{"201":{"description":"Close virtual account has been initiated."},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthenticatedResponse"}}}},"422":{"description":"Unprocessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResponse"}}}}}}}}}
```

## Upload virtual IBAN document

> Upload virtual IBAN document

```json
{"openapi":"3.0.0","info":{"title":"GURUPAY API","version":"0.2.0"},"tags":[{"name":"Documents","description":"Documents"}],"servers":[{"url":"https://public-api.gurupay.eu","description":"Production API Server"},{"url":"https://public-api-dev.gurupay.eu","description":"Sandbox API Server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","description":"Authentication using a Bearer token.","name":"Authorization","in":"header","bearerFormat":"JWT","scheme":"bearer"}},"schemas":{"UUID":{"description":"Universally Unique Identifier (UUID) as defined by RFC 4122.","type":"string","format":"uuid","pattern":"^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$"},"API.Requests.UploadDocument":{"title":"Virtual Account upload document","description":"Data required to upload a document to a virtual account.","required":["type","file_name","attachment"],"properties":{"type":{"description":"Document type","type":"string","enum":["registration_document","vat_document","proof_of_ownership","proof_of_industry","identity_card","drivers_license","passport","residence_permit","proof_of_residence","proof_of_address","other"]},"description":{"description":"Description","type":"string"},"file_name":{"description":"Original filename","type":"string"},"attachment":{"required":["content"],"properties":{"content":{"description":"Base64 encoded file content","type":"string","format":"byte"},"page_type":{"description":"Page side of the document (required for identity_card and drivers_license)","type":"string","enum":["front","back"],"nullable":true}},"type":"object"}},"type":"object"},"ValidationResponse":{"title":"Validation Error Response","description":"Standard response format for validation errors (HTTP 422).","required":["status","status_code","message","errors"],"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"description":"An object containing validation errors. Keys are field names, values are arrays of error messages for that field.","type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"type":"object"},"UnauthenticatedResponse":{"properties":{"status":{"type":"boolean"},"status_code":{"type":"integer"},"message":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}}},"type":"object"}}},"paths":{"/api/v1/customers/{customer_uuid}/accounts/{account_uuid}/documents":{"post":{"tags":["Documents"],"summary":"Upload virtual IBAN document","description":"Upload virtual IBAN document","operationId":"API.Documents.Upload","parameters":[{"name":"customer_uuid","in":"path","description":"The unique identifier (UUID) of the customer.","required":true,"schema":{"$ref":"#/components/schemas/UUID"}},{"name":"account_uuid","in":"path","description":"The unique identifier (UUID) of the account.","required":true,"schema":{"$ref":"#/components/schemas/UUID"}}],"requestBody":{"description":"Document upload payload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/API.Requests.UploadDocument"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Unprocessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthenticatedResponse"}}}},"404":{"description":"Virtual IBAN not found."},"422":{"description":"Unprocessable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResponse"}}}}}}}}}
```

### Verification of Payee (VoP) Support <a href="#verification-of-payee-vop-support" id="verification-of-payee-vop-support"></a>

vIBANs are fully compatible with Verification of Payee checks. When your vIBAN is created, GuruPay registers it with the European Payments Council (EPC) database using dual ownership information:

* **Your details** (as the account client).
* **Virtual owner details** (as provided during creation).

This dual registration ensures that when someone initiates a payment to your vIBAN, the VoP verification will return a `MATCH` response regardless of whether the sender uses:

* Your company information.
* The virtual owner information you specified.

{% hint style="info" %}
If sender details contain typos or misspellings of either ownership information, standard VoP matching rules apply and may result in partial matches or no matches. For complete VoP guidance, refer to the European Payments Council documentation: [Verification Of Payee](https://www.europeanpaymentscouncil.eu/what-we-do/other-schemes/verification-payee) and [EPC recommendations for the matching processes under the Verification Of Payee scheme rulebook](https://www.europeanpaymentscouncil.eu/document-library/other/epc-recommendations-matching-processes-under-verification-payee-scheme)
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.gurupay.eu/api-reference/virtual-ibans.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
