Quick Start Overview

The VOP API enables you to verify payee information before processing payments. This guide will help you make your first API call in minutes.

1

Get Credentials

Register for API access

2

Set Up Auth

Configure JWT token

3

Make First Call

Verify a test payee

4

Handle Response

Process verification result

Step 1: Get Your API Credentials

To access the VOP API test environment:

  1. Contact Trendtech with your company details
  2. You'll receive:
    • Client ID
    • Client Secret
    • Auth0 domain details

Step 2: Authenticate

The VOP API uses JWT tokens for authentication. Get your token:

curl -X POST https://your-auth0-domain/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET",
    "audience": "https://api.trendtech.uk/vop",
    "grant_type": "client_credentials"
  }'

Response:

{
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 86400
}

Step 3: Make Your First API Call

Verify a payee using their name and IBAN:

curl -X POST https://environmentDefaultValue.trendtech.uk/vop/v1/request \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Request-ID: 550e8400-e29b-41d4-a716-446655440000" \
  -d '{
    "party": {
      "name": "John Doe"
    },
    "partyAccount": {
      "iban": "BE12345678901234"
    },
    "partyAgent": {
      "financialInstitutionId": {
        "bicfi": "GEBABEBBXXX"
      }
    },
    "requestingAgent": {
      "financialInstitutionId": {
        "bicfi": "DEUTDEFFXXX"
      }
    }
  }'

Step 4: Handle the Response

The API returns a verification result:

{
  "partyNameMatch": "MTCH"
}

Response Codes

Code Meaning Action
MTCH Exact match Proceed with payment
NMTC No match Review payment details
CMTC Close match Show actual name to user
NOAP No account found Account doesn't exist

Complete Examples

Python

import requests
import json

# Get auth token
auth_response = requests.post(
    "https://your-auth0-domain/oauth/token",
    json={
        "client_id": "YOUR_CLIENT_ID",
        "client_secret": "YOUR_CLIENT_SECRET",
        "audience": "https://api.trendtech.uk/vop",
        "grant_type": "client_credentials"
    }
)
token = auth_response.json()["access_token"]

# Verify payee
vop_response = requests.post(
    "https://environmentDefaultValue.trendtech.uk/vop/v1/request",
    headers={
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json",
        "X-Request-ID": "550e8400-e29b-41d4-a716-446655440000"
    },
    json={
        "party": {"name": "John Doe"},
        "partyAccount": {"iban": "BE12345678901234"},
        "partyAgent": {"financialInstitutionId": {"bicfi": "GEBABEBBXXX"}},
        "requestingAgent": {"financialInstitutionId": {"bicfi": "DEUTDEFFXXX"}}
    }
)

result = vop_response.json()
if result.get("partyNameMatch") == "MTCH":
    print("✅ Payee verified!")
elif result.get("partyNameMatch") == "CMTC":
    print(f"⚠️ Close match: {result.get('matchedName')}")
else:
    print("❌ Verification failed")

JavaScript (Node.js)

const axios = require('axios');

async function verifyPayee() {
    // Get auth token
    const authResponse = await axios.post('https://your-auth0-domain/oauth/token', {
        client_id: 'YOUR_CLIENT_ID',
        client_secret: 'YOUR_CLIENT_SECRET',
        audience: 'https://api.trendtech.uk/vop',
        grant_type: 'client_credentials'
    });
    
    const token = authResponse.data.access_token;
    
    // Verify payee
    const vopResponse = await axios.post(
        'https://environmentDefaultValue.trendtech.uk/vop/v1/request',
        {
            party: { name: 'John Doe' },
            partyAccount: { iban: 'BE12345678901234' },
            partyAgent: { financialInstitutionId: { bicfi: 'GEBABEBBXXX' } },
            requestingAgent: { financialInstitutionId: { bicfi: 'DEUTDEFFXXX' } }
        },
        {
            headers: {
                'Authorization': `Bearer ${token}`,
                'Content-Type': 'application/json',
                'X-Request-ID': '550e8400-e29b-41d4-a716-446655440000'
            }
        }
    );
    
    const result = vopResponse.data;
    if (result.partyNameMatch === 'MTCH') {
        console.log('✅ Payee verified!');
    } else {
        console.log('❌ Verification failed');
    }
}

verifyPayee();

Java

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class VopExample {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        
        // First get auth token (simplified)
        String token = "YOUR_ACCESS_TOKEN";
        
        // Create request
        String requestBody = """
            {
                "party": {"name": "John Doe"},
                "partyAccount": {"iban": "BE12345678901234"},
                "partyAgent": {"financialInstitutionId": {"bicfi": "GEBABEBBXXX"}},
                "requestingAgent": {"financialInstitutionId": {"bicfi": "DEUTDEFFXXX"}}
            }
            """;
        
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://environmentDefaultValue.trendtech.uk/vop/v1/request"))
            .header("Authorization", "Bearer " + token)
            .header("Content-Type", "application/json")
            .header("X-Request-ID", "550e8400-e29b-41d4-a716-446655440000")
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();
        
        HttpResponse response = client.send(request, 
            HttpResponse.BodyHandlers.ofString());
        
        System.out.println("Response: " + response.body());
    }
}

Next Steps

Need Help?

If you run into any issues: