AgentSkillsCN

Process Invoice Accuracy

处理发票准确性核查

SKILL.md

Skill: Process Invoice Accuracy

Domain

financial_services

Description

Processes and validates invoice accuracy by matching against purchase orders, contracts, and receiving records.

Tags

invoicing, AP, procurement, matching, accuracy, finance

Use Cases

  • 3-way matching
  • Invoice validation
  • Duplicate detection
  • Payment authorization

Proprietary Business Rules

Rule 1: Three-Way Matching

Invoice to PO to receipt matching.

Rule 2: Price Variance Detection

Unit price discrepancy identification.

Rule 3: Quantity Verification

Quantity accuracy validation.

Rule 4: Duplicate Prevention

Duplicate invoice detection.

Input Parameters

  • invoice_id (string): Invoice identifier
  • invoice_data (dict): Invoice details
  • purchase_order (dict): Related PO data
  • receiving_records (list): Receipt documentation
  • contract_terms (dict): Applicable contract
  • tolerance_rules (dict): Matching tolerances

Output

  • match_result (string): Match status
  • variances (list): Identified discrepancies
  • duplicate_check (dict): Duplicate detection
  • approval_status (string): Payment authorization
  • exceptions (list): Required actions

Implementation

The processing logic is implemented in invoice_processor.py and references data from invoice_rules.json.

Usage Example

python
from invoice_processor import process_invoice

result = process_invoice(
    invoice_id="INV-001",
    invoice_data={"amount": 10500, "vendor": "VND-001", "line_items": [{"qty": 100, "price": 105}]},
    purchase_order={"po_number": "PO-001", "line_items": [{"qty": 100, "price": 100}]},
    receiving_records=[{"po": "PO-001", "qty_received": 100}],
    contract_terms={"price_per_unit": 100, "effective_date": "2025-01-01"},
    tolerance_rules={"price_variance_pct": 0.05, "quantity_variance_units": 2}
)

print(f"Match Result: {result['match_result']}")

Test Execution

python
from invoice_processor import process_invoice

result = process_invoice(
    invoice_id=input_data.get('invoice_id'),
    invoice_data=input_data.get('invoice_data', {}),
    purchase_order=input_data.get('purchase_order', {}),
    receiving_records=input_data.get('receiving_records', []),
    contract_terms=input_data.get('contract_terms', {}),
    tolerance_rules=input_data.get('tolerance_rules', {})
)