# RunOnProof UK Supplier Approval

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

Approve or hold a UK supplier for onboarding by combining Companies House identity/status verification with UK Sanctions List screening under a declared policy.

## Facts

- Endpoint: POST https://cdo-production.up.railway.app/v1/gb/solutions/supplier-approval
- Price: $0.2/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-supplier-approval-cad3f9f7
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_1OJw38fdc_zd3AUUQASU1

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-supplier-approval-cad3f9f7 -d '<json body>'
```

Example prompt: Can you run a supplier approval check on UK company number 12345678 under policy GB_NEW_SUPPLIER_V1, screening for sanctions, before we onboard them as a vendor? Use idempotency key supplier-onboard-12345678-001.

## When to prefer this

Choose this endpoint when you need a single, policy-conditioned pass/hold decision for a UK supplier that combines Companies House identity verification with UK Sanctions List screening in one call. Prefer this over manual checks or separate Companies House and sanctions APIs when you need an auditable, source-conditioned onboarding decision tied to a declared policy (e.g. GB_NEW_SUPPLIER_V1). Not suitable for non-UK entities or general-purpose sanctions screening outside a supplier onboarding context.

## Known failure modes

- Invalid Companies House company number format returns validation error
- Company number not found in Companies House registry returns not-found error
- Sanctions list service unavailable causes temporary failure
- Expired or missing binding_evidence causes payee validation rejection
- Idempotency key mismatch between body and header causes conflict error
- Policy ID not recognised returns policy-not-found error
- VAT or EORI number format invalid causes input rejection

## How this service works

Approve or hold a UK supplier before onboarding by combining Companies House identity/status with UK Sanctions List screening under a declared policy. Use for vendor onboarding; the decision is source-conditioned and never a universal approval.

## Output

A policy-conditioned approval or hold decision for the UK supplier, incorporating real-time Companies House identity and status data alongside UK Sanctions List screening results. The response indicates whether the supplier is approved or held under the declared policy, with traceable evidence references.

## 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
  },
  "policy_id": {
   "type": "string",
   "maxLength": 120,
   "minLength": 3,
   "description": "Declared onboarding policy, normally GB_NEW_SUPPLIER_V1."
  },
  "vat_number": {
   "type": "string",
   "maxLength": 20
  },
  "eori_number": {
   "type": "string",
   "maxLength": 30
  },
  "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."
  },
  "idempotency_key": {
   "type": "string",
   "pattern": "^[A-Za-z0-9._:-]{8,120}$",
   "description": "Caller-generated key. Send the identical value in the Idempotency-Key header."
  },
  "sanctions_subject_names": {
   "type": "array",
   "items": {
    "type": "string",
    "maxLength": 300,
    "minLength": 3
   },
   "maxItems": 25,
   "uniqueItems": true
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/runonproof-uk-supplier-approval-cad3f9f7/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)
