# RunOnProof UK Invoice-Payee Verification

> RunOnProof UK Invoice-Payee Verification is a paid API for AI agents from cdo-production.up.railway.app, paid per call via x402, $0.09/call, status unknown (last checked 2026-09-15).

Verifies that the company number on a UK invoice matches the intended payee and validates a time-bound payee-binding control in a single pre-payment call.

## Facts

- Endpoint: POST https://cdo-production.up.railway.app/v1/gb/solutions/invoice-payee-verification
- Price: $0.09/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/runonproof-uk-invoice-payee-verification-a5da20d8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_qwwIYYTarskrZL3-kVV8L

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability runonproof-uk-invoice-payee-verification-a5da20d8 -d '<json body>'
```

Example prompt: Before we pay this invoice from Acme Supplies Ltd (Companies House number 12345678, VAT GB123456789), can you verify it's consistent with our payee fingerprint 'fp-acme-uk-9a2b3c4d' and confirm the binding evidence type PREVIOUSLY_VERIFIED_BINDING is still valid until 2025-12-31T23:59:59Z, verified on 2024-06-01T10:00:00Z with reference 'binding-ref-2024-001'?

## When to prefer this

Use this endpoint when you already know both the invoice details and the intended payee and need a fast, single-call pre-payment check that the invoice company number is consistent with the payee and that a time-bound binding control is still valid. Prefer this over broader supplier onboarding or full due-diligence endpoints when the goal is narrow invoice-payee consistency validation rather than company identity resolution or full payment authorization.

## Known failure modes

- Binding evidence expired (valid_until in the past) — returns validation failure
- Company number format mismatch or invalid pattern — returns schema validation error
- Payee fingerprint too short or missing — returns 400 bad request
- Invoice company number does not match payee company number — returns consistency failure
- Missing required fields (company_number or payee_fingerprint) — returns 422 unprocessable entity
- Payment not made / x402 auth failure — returns 402 Payment Required

## How this service works

Verify UK invoice-company consistency and a time-bound payee-binding control in one call before payment. Use when the invoice and payee are already known. It does not prove invoice authenticity or bank-account ownership.

## Output

Returns a structured outcome indicating whether the invoice's Companies House company number is consistent with the registered payee and whether the time-bound payee-binding control is currently valid. Does not independently verify bank account ownership or invoice authenticity.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "payee": {
   "type": "object",
   "required": [
    "company_number",
    "payee_fingerprint"
   ],
   "properties": {
    "company_number": {
     "type": "string",
     "pattern": "^(?:(?:[A-Z]{2}|[0-9]{2})?[0-9]{6}|[0-9]{8})$",
     "description": "Companies House company number, including any two-letter prefix when applicable."
    },
    "binding_evidence": {
     "type": "object",
     "required": [
      "type",
      "verified_at",
      "valid_until",
      "reference"
     ],
     "properties": {
      "type": {
       "enum": [
        "PREVIOUSLY_VERIFIED_BINDING",
        "BANK_PROVIDER_CONFIRMATION",
        "CUSTOMER_CONFIRMATION",
        "CHALLENGE"
       ]
      },
      "reference": {
       "type": "string",
       "maxLength": 200,
       "minLength": 1,
       "description": "Non-secret reference to the evidence held by the caller."
      },
      "valid_until": {
       "type": "string",
       "format": "date-time",
       "description": "Expiry of the caller/provider evidence; must be in the future."
      },
      "verified_at": {
       "type": "string",
       "format": "date-time",
       "description": "When the caller or provider verified the binding."
      }
     },
     "additionalProperties": false
    },
    "payee_fingerprint": {
     "type": "string",
     "maxLength": 200,
     "minLength": 8,
     "description": "Opaque caller-generated fingerprint; never send raw bank-account details."
    }
   },
   "additionalProperties": false
  },
  "invoice": {
   "type": "object",
   "required": [
    "company_number"
   ],
   "properties": {
    "vat_number": {
     "type": "string",
     "maxLength": 20,
     "description": "Optional UK VAT number; this route does not independently verify VAT registration."
    },
    "company_number": {
     "type": "string",
     "pattern": "^(?:(?:[A-Z]{2}|[0-9]{2})?[0-9]{6}|[0-9]{8})$",
     "description": "Companies House company number, including any two-letter prefix when applicable."
    },
    "invoice_address": {
     "type": "object",
     "properties": {
      "line_1": {
       "type": "string",
       "maxLength": 300
      },
      "line_2": {
       "type": "string",
       "maxLength": 300
      },
      "country": {
       "type": "string",
       "maxLength": 80
      },
      "locality": {
       "type": "string",
       "maxLength": 200
      },
      "postal_code": {
       "type": "string",
       "maxLength": 20
      }
     }
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/runonproof-uk-invoice-payee-verification-a5da20d8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from cdo-production.up.railway.app](https://www.zero.xyz/host/cdo-production.up.railway.app/llms.txt)
