# 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-13).

Screens a UK supplier against Companies House status and the UK Sanctions List under a declared onboarding policy, returning a bounded APPROVE or HOLD decision.

## Facts

- Endpoint: POST https://cdo-production.up.railway.app/v1/gb/suppliers/approve
- Price: $0.2/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/runonproof-uk-supplier-approval-4e705c75
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_QtYNG6_6mjl4T-OzU-M0s

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-4e705c75 -d '<json body>'
```

Example prompt: Can you screen UK company number 12345678 against Companies House and the UK Sanctions List under policy GB_NEW_SUPPLIER_V1 before we onboard them as a supplier? Their payee fingerprint is 'supp-fp-abc123xyz'.

## When to prefer this

Use this endpoint when you need a fast, policy-scoped pre-onboarding decision for a UK supplier combining Companies House identity/status verification with UK Sanctions List screening in a single call. Prefer this over manual checks or generic company lookup endpoints when you need a traceable, policy-bound APPROVE/HOLD verdict suitable for audit trails. Do not use for non-UK companies, payment authorization (use the payment authorization endpoint), or when you need a universal compliance certification rather than a bounded policy decision.

## Known failure modes

- Invalid Companies House company number format — returns validation error
- Company not found in Companies House registry — decision cannot be made
- Sanctions list service unavailable — request fails or returns error
- Payee fingerprint missing or too short — schema validation error
- Policy ID not recognized — returns policy error
- Idempotency key format mismatch — request rejected
- binding_evidence.valid_until is in the past — validation failure
- Sanctions subject names list exceeds 25 items — schema error

## How this service works

Screen a UK supplier before onboarding using Companies House status and the UK Sanctions List under the declared policy. Use for a bounded vendor decision. APPROVE is policy- and source-scoped, never a universal compliance approval.

## Output

Returns a bounded APPROVE or HOLD decision for the UK supplier, scoped to the declared policy and the two data sources checked (Companies House and UK Sanctions List). Includes the Companies House status, sanctions match outcome, and a traceable decision reference. The APPROVE result is policy-scoped and source-scoped, not a universal compliance clearance.

## 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-4e705c75/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)
