← Back to Catalog

Invoice Purchase Order Matcher

ID: F023 | Version: 0.1.0

Tool: match_invoice_purchase_order

Mechanically reconcile supplied purchase-order lines, invoice lines and goods receipts under explicit decimal and tolerance rules. The report identifies discrepancies and is not an approval to pay.

Pricing

0.05 per analysis

Requires x402 capable MCP client with wallet for payment settlement.

Input Schema

{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "currency",
    "minor_unit_digits",
    "purchase_order",
    "invoice",
    "receipts"
  ],
  "properties": {
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$"
    },
    "minor_unit_digits": {
      "type": "integer",
      "minimum": 0,
      "maximum": 6
    },
    "purchase_order": {
      "type": "array",
      "maxItems": 500,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "line_id",
          "sku",
          "quantity",
          "unit_price"
        ],
        "properties": {
          "line_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "quantity": {
            "type": "string"
          },
          "unit_price": {
            "type": "string"
          }
        }
      }
    },
    "invoice": {
      "type": "array",
      "minItems": 1,
      "maxItems": 500,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "line_id",
          "po_line_id",
          "sku",
          "quantity",
          "unit_price"
        ],
        "properties": {
          "line_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "quantity": {
            "type": "string"
          },
          "unit_price": {
            "type": "string"
          },
          "po_line_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        }
      }
    },
    "receipts": {
      "type": "array",
      "maxItems": 1000,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "po_line_id",
          "quantity"
        ],
        "properties": {
          "po_line_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "quantity": {
            "type": "string"
          }
        }
      }
    },
    "tolerance_minor": {
      "type": "string"
    }
  }
}

Example Input

{
  "currency": "USD",
  "minor_unit_digits": 2,
  "purchase_order": [
    {
      "line_id": "PO1",
      "sku": "WIDGET",
      "quantity": "10",
      "unit_price": "2.00"
    }
  ],
  "invoice": [
    {
      "line_id": "INV1",
      "po_line_id": "PO1",
      "sku": "WIDGET",
      "quantity": "10",
      "unit_price": "2.00"
    }
  ],
  "receipts": [
    {
      "po_line_id": "PO1",
      "quantity": "10"
    }
  ],
  "tolerance_minor": "0"
}

Example Output

{
  "ok": true,
  "stage": "complete",
  "currency": "USD",
  "minor_unit_digits": 2,
  "tolerance_minor": "0",
  "lines": [
    {
      "line_id": "INV1",
      "po_line_id": "PO1",
      "sku": "WIDGET",
      "quantity": "10",
      "unit_price": "2.00",
      "line_total_minor": "2000",
      "exceptions": []
    }
  ],
  "purchase_order_summary": [
    {
      "po_line_id": "PO1",
      "sku": "WIDGET",
      "ordered_quantity": "10.000000",
      "received_quantity": "10.000000",
      "invoiced_quantity": "10.000000",
      "exceptions": []
    }
  ],
  "receipt_exceptions": [],
  "summary": {
    "purchase_order_line_count": 1,
    "invoice_line_count": 1,
    "receipt_line_count": 1,
    "total_invoice_minor": "2000",
    "exception_count": 0,
    "matched": true
  }
}

Limitations

Connect via MCP

Add to your MCP client configuration:

{
  "mcpServers": {
    "invoice-purchase-order-matcher": {
      "type": "http",
      "url": "https://mcp-factory.bowling-anthony.workers.dev/invoice-purchase-order-matcher/mcp"
    }
  }
}

Payment

Price: 0.05 USDC per analysis

This tool requires an x402-capable MCP client with wallet support. Tool listing and initialization are free. Actual completed job analysis is paid in USDC on the Base network.

Payment flow:

  1. Client discovers the price, then submits a signed x402 v2 PAYMENT-SIGNATURE authorization with the input
  2. If settlement is pending, retry the identical input and authorization; do not sign another charge.
  3. Results retained for 24 hours for recovery
  4. Maximum output size: 96 KiB