# Ardaro Invoice Matching

> Ardaro Invoice Matching is a paid API for AI agents from agents.getardaro.com, paid per call via x402, $0.5/call, status unknown (last checked 2026-09-14).

Compares a single invoice against a purchase order line-by-line and returns a structured discrepancy report for human review, without approving payment or posting to financial systems.

## Facts

- Endpoint: POST https://agents.getardaro.com/v1/invoice-matching/analyze
- Price: $0.5/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ardaro-invoice-matching-62b3808a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fqd9TrEzRMwRxAF_notKx

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 ardaro-invoice-matching-62b3808a -d '<json body>'
```

Example prompt: Can you check if supplier invoice INV-2024-0891 from supplier S-4421 matches PO PO-2024-3310? The invoice is in USD, has one line item for 10 units of 'Widget A' at $20.00 each (line ID L-001, mapped to PO line PO-L-001), subtotal $200.00, tax $14.00, total $214.00 — flag any discrepancies for my AP team to review.

## When to prefer this

Choose this endpoint when you need a deterministic, auditable, stateless invoice-to-PO comparison for a single invoice before human AP review — especially when you need documented policy boundaries (no payment approval, no financial posting, no delivery verification) that satisfy compliance requirements. Prefer this over general-purpose LLM analysis when you need reproducible results and explicit discrepancy enumeration. Not suitable for bulk batch processing of many invoices in one call, for payment execution, or for delivery/receipt verification.

## Known failure modes

- Missing required invoice fields (currency, line_items, reference, supplier_id, purchase_order_reference) returns a validation error
- Invalid currency code not in the allowed enum returns a schema error
- Line item quantity of zero is rejected by schema validation
- Malformed numeric strings (e.g. amounts with more than two decimal places for non-JPY) fail pattern validation
- PO line ID references that don't resolve to any PO line result in unmatched invoice lines
- Arithmetic inconsistencies between supplied line amounts and totals are surfaced as discrepancies, not errors
- Truncated or missing PO data may result in unknown_check outcomes rather than matched/unmatched classification

## How this service works

Evidence-bounded visibility into publicly discoverable x402 agent services.

## Output

Returns a JSON object containing: a policy block (documenting what checks were and were not performed, that human review is always required, and that no payment approval or financial posting occurs), a summary block (overall outcome such as 'no_discrepancies' or 'discrepancies_found', counts of matched/unmatched lines, and unknown checks), an arithmetic block (computed and supplied totals, subtotals, tax, rounding mode), a list of discrepancies (empty if none found), and an array of comparison rows (one per invoice line, showing match method, invoice and PO values, and per-line outcome).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "invoice": {
   "type": "object",
   "allOf": [
    {
     "if": {
      "properties": {
       "currency": {
        "const": "JPY"
       }
      }
     },
     "then": {
      "properties": {
       "tax": {
        "type": "string",
        "pattern": "^(?:0|[1-9][0-9]{0,25})(?![\\s\\S])",
        "maxLength": 26
       },
       "total": {
        "type": "string",
        "pattern": "^(?:0|[1-9][0-9]{0,25})(?![\\s\\S])",
        "maxLength": 26
       },
       "subtotal": {
        "type": "string",
        "pattern": "^(?:0|[1-9][0-9]{0,25})(?![\\s\\S])",
        "maxLength": 26
       },
       "line_items": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "amount": {
           "type": "string",
           "pattern": "^(?:0|[1-9][0-9]{0,25})(?![\\s\\S])",
           "maxLength": 26
          }
         }
        }
       }
      }
     }
    }
   ],
   "required": [
    "currency",
    "line_items",
    "purchase_order_reference",
    "reference",
    "supplier_id"
   ],
   "properties": {
    "tax": {
     "type": "string",
     "pattern": "^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?(?![\\s\\S])",
     "maxLength": 29
    },
    "total": {
     "type": "string",
     "pattern": "^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?(?![\\s\\S])",
     "maxLength": 29
    },
    "currency": {
     "enum": [
      "USD",
      "EUR",
      "GBP",
      "CAD",
      "AUD",
      "MXN",
      "JPY"
     ],
     "type": "string"
    },
    "subtotal": {
     "type": "string",
     "pattern": "^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?(?![\\s\\S])",
     "maxLength": 29
    },
    "reference": {
     "type": "string",
     "maxLength": 80,
     "minLength": 1
    },
    "line_items": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "description",
       "line_id",
       "quantity",
       "unit",
       "unit_price"
      ],
      "properties": {
       "unit": {
        "type": "string",
        "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*(?![\\s\\S])",
        "maxLength": 32,
        "minLength": 1
       },
       "amount": {
        "type": "string",
        "pattern": "^(?:0|[1-9][0-9]{0,25})(?:\\.[0-9]{1,2})?(?![\\s\\S])",
        "maxLength": 29
       },
       "line_id": {
        "type": "string",
        "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*(?![\\s\\S])",
        "maxLength": 80,
        "minLength": 1
       },
  
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "result": {
   "policy": {
    "stateless": true,
    "model_calls": 0,
    "matching_rule": "explicit_po_line_id_else_unique_case_sensitive_product_code",
    "decision_scope": "No discrepancies means only that the supported checks found none in supplied data. Human review is always required.",
    "quantity_scope": "Only this invoice is counted; prior invoices and deliveries are not checked. Uninvoiced quantity is not evidence of undelivered goods. Uncertain allocation makes affected PO quantities unavailable.",
    "supplier_scope": "Supplier identifiers are caller-supplied matching identifiers; supplier identity and document authenticity are not verified.",
    "arithmetic_scope": "Supplied line amounts and totals are checked using per-line rounding. Tax applicability, discounts, shipping, and alternate rounding policies are not inferred.",
    "identity_purpose": "deterministic_result_comparison_only",
    "human_review_required": true,
    "raw_documents_retained": false,
    "payment_approval_supported": false,
    "financial_posting_performed": false,
    "financial_posting_supported": false,
    "delivery_verification_supported": false
   },
   "summary": {
    "outcome": "no_discrepancies",
    "payment_approved": false,
    "delivery_verified": false,
    "discrepancy_count": 0,
    "invoice_line_count": 1,
    "unknown_check_count": 0,
    "human_review_required": true,
    "purchase_order_line_count": 1,
    "matched_invoice_line_count": 1,
    "unmatched_invoice_line_count": 0
   },
   "arithmetic": {
    "invoice_tax": "1.40",
    "invoice_total": "21.40",
    "rounding_mode": "ROUND_HALF_UP",
    "rounding_scope": "each_line_then_sum",
    "invoice_subtotal": "20.00",
    "invoice_total_status": "consistent",
    "computed_invoice_total": "21.40",
    "invoice_currency_scale": 2,
    "invoice_line_amount_sum": "20.00",
    "invoice_subtotal_status": "consistent",
    "purchase_order_currency_scale": 2,
    "invoice_supplied_line_amount_sum": "20.00"
   },
   "discrepancies": [],
   "comparison_rows": [
    {
     "outcome": "no_discrepancies",
     "invoice_unit": "each",
     "match_method": "explicit_po_line_id",
     "invoice_amount": "20.00",
     "invoice_source": "/invoice/line_items/0",
     "invoice_line_id": "INV-1",
     "invoice_currency": "USD",
     "invoice_quantity": "2",
     "allocation_status": "allocated",
     "discrepancy_codes": [],
     "invoice_unit_price": "10",
     "purchase_orde
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ardaro-invoice-matching-62b3808a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.getardaro.com](https://www.zero.xyz/host/agents.getardaro.com/llms.txt)
