# RunOnProof UK Payment Authorization

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

Authorizes a single UK business payment by composing supplier identity, invoice, and payee binding controls into one decision, returning approval or a HOLD with traceable evidence.

## Facts

- Endpoint: POST https://cdo-production.up.railway.app/v1/gb/solutions/payment-authorization
- Price: $0.25/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-payment-authorization-f62aefc3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_EILcryGCOaOCRytDH5xyT

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-payment-authorization-f62aefc3 -d '<json body>'
```

Example prompt: Can you run a payment authorization for our UK supplier Acme Widgets Ltd (Companies House number 12345678) — we have a BANK_PROVIDER_CONFIRMATION binding on payee fingerprint 'fp-acme-sort-acc-9876', verified yesterday and valid until end of March, reference 'BPC-2024-001' — and the invoice is from the same company for £4,750.00?

## When to prefer this

Use this endpoint immediately before releasing any UK business payment where you need a single composed decision across supplier identity (Companies House), invoice provenance, and payee bank-account binding. Prefer it over separate due-diligence checks when you need a single-use, bounded authorization token as a control gate in your payment workflow. It is especially suited for automated accounts-payable pipelines where the HOLD/APPROVE signal must be machine-readable and auditable.

## Known failure modes

- Missing or expired payee binding evidence produces a HOLD decision rather than an error
- Payee fingerprint too short or company number format invalid returns a 400 validation error
- Source-conditioned evidence (e.g. binding verified by an untrusted source) causes a HOLD
- Payment amount with more than 2 decimal places rejected by schema validation
- Invoice company number mismatch with payee triggers a HOLD
- Attempting to reuse a single-use token results in rejection
- Stale valid_until timestamp (in the past) causes binding evidence to be rejected

## How this service works

Authorize one UK business payment by composing supplier, invoice and payee controls into a single decision and settlement. Use immediately before payment release. Missing or source-conditioned evidence produces HOLD; the token is bounded and single-use.

## Output

Returns a structured authorization decision: APPROVED (with a bounded, single-use settlement token) or HOLD (with a reason code and traceable evidence references explaining which control — supplier identity, invoice match, or payee binding — was missing or failed). The token is time-bounded and must be used immediately before payment release.

## 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
  },
  "amount": {
   "type": "string",
   "pattern": "^\\d+(?:\\.\\d{1,2})?$",
   "description": "Positive decimal payment amount in the declared currency; not the x402 fee."
  },
  "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":
… (truncated)
```

## More

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