Available · v1

Quote Intelligence

Send a quote with your pricing rules, approval policy, and the customer's requirements. Get back exact pricing errors, discount exceptions, unmet requirements, and whether approval is needed.

  • Exact decimal pricing arithmetic
  • Your discount, product, and approval rules applied as written
  • Customer requirements checked against the quoted lines
  • Never invents a policy you didn't send
Request body
{
  "quote_id": "Q-2026-0142",
  "currency": "USD",
  "lines": [
    {
      "product_id": "SRV-R740",
      "name": "Rack server, 2U, dual CPU",
      "quantity": 4,
      "list_price": "8200.00",
      "net_price": "6560.00",
      "discount_percent": 20,
      "attributes": {
        "power_supply": "230V"
      }
    },
    {
      "product_id": "SUP-3Y",
      "name": "3-year onsite support",
      "quantity": 4,
      "list_price": "900.00",
      "net_price": "900.00"
    },
    {
      "product_id": "RAIL-KIT",
      "name": "Sliding rail kit",
      "quantity": 2,
      "list_price": "120.00",
      "net_price": "120.00"
    }
  ],
  "total": "30080.00",
  "pricing_rules": {
    "max_discount_percent": 25,
    "requires": [
      {
        "product_id": "SRV-R740",
        "requires_product_id": "SUP-3Y"
      }
    ]
  },
  "approval_policy": {
    "discount_percent_over": 15,
    "total_over": 50000
  },
  "customer_requirements": [
    "Four servers",
    "Onsite support for at least three years",
    "A rail kit for every server"
  ]
}
Response · 200 OK
{
  "request_id": "req_Hq8mT3vLp6RzN1wK",
  "status": "issues_found",
  "recommended_action": "correct_quote",
  "issues": [
    {
      "type": "requirement_mismatch",
      "method": "model_assisted",
      "explanation": "The quote doesn't meet the customer requirement: \"A rail kit for every server\"",
      "evidence": [
        "customer_requirements[2]"
      ]
    }
  ],
  "approval_required": true,
  "approval_reasons": [
    "A discount of 20% is above the 15% approval threshold."
  ],
  "computed_total": "30080.00",
  "missing_information": []
}
The problem

Quote errors reach customers

Sales and CPQ teams build quotes with discounts, bundles, and configurations. A wrong net price, a missing required product, or an unapproved discount costs margin and credibility.

Pricing checks
Net prices against list and discount, line amounts, totals, and maximum discounts, to the cent.
Product rules
Products that require or exclude each other, plus interpreted configuration conflicts between lines.
Requirements and approvals
Each customer requirement is checked against the quote, and approval thresholds come only from your policy.
Use cases

Where teams use it

  • CPQ validation
  • Deal desk review
  • Discount governance
  • Partner quoting
  • Renewal quotes
Integrate

One HTTP call

const response = await fetch("https://kovca.io/api/v1/quotes/check", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KOVCA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "quote_id": "Q-2026-0142",
    "currency": "USD",
    "lines": [
      {
        "product_id": "SRV-R740",
        "name": "Rack server, 2U, dual CPU",
        "quantity": 4,
        "list_price": "8200.00",
        "net_price": "6560.00",
        "discount_percent": 20,
        "attributes": {
          "power_supply": "230V"
        }
      },
      {
        "product_id": "SUP-3Y",
        "name": "3-year onsite support",
        "quantity": 4,
        "list_price": "900.00",
        "net_price": "900.00"
      },
      {
        "product_id": "RAIL-KIT",
        "name": "Sliding rail kit",
        "quantity": 2,
        "list_price": "120.00",
        "net_price": "120.00"
      }
    ],
    "total": "30080.00",
    "pricing_rules": {
      "max_discount_percent": 25,
      "requires": [
        {
          "product_id": "SRV-R740",
          "requires_product_id": "SUP-3Y"
        }
      ]
    },
    "approval_policy": {
      "discount_percent_over": 15,
      "total_over": 50000
    },
    "customer_requirements": [
      "Four servers",
      "Onsite support for at least three years",
      "A rail kit for every server"
    ]
  }),
});

if (!response.ok) {
  const { error, request_id } = await response.json();
  throw new Error(`${error.code}: ${error.message} (${request_id})`);
}

const { status, recommended_action, issues, approval_required } = await response.json();
  • Invoice Intelligence

    Reconcile invoices against purchase orders and receipts, and find discrepancies before payment approval.