API infrastructure for AP & procurement software
The decision API your
AP system can explain.
Embed Maqaas in your AP or procurement product. Send invoice, PO, vendor, and policy context to one API and get back an auditable decision, evidence, deterministic rules, and the exact next action.
- API-only
- Embed Maqaas inside your existing product. No dashboard to adopt.
- Reproducible policy
- Versioned rules — same inputs, same decision.
- No business-document persistence
- Invoice, PO, vendor, and policy payloads are processed without Maqaas becoming your system of record.
-
INVOICE_PO_VARIANCEpassed -
CURRENCY_MISMATCHpassed -
DUPLICATE_INVOICE_NUMBERpassed -
BANK_DETAILS_CHANGEDfired
expectedaccount_number_last4=9021 observedaccount_number_last4=4471
Everything matches.
Except the bank details.
A single invoice, cross-checked against its purchase order and the trusted vendor record. Maqaas does not just flag the exception — it names the rule, shows the comparison that fired it, and states what would clear it.
| Field | Invoice | Trusted record | Match |
|---|---|---|---|
| Vendor | Northstar Components | Northstar Components | ✓matches |
| Purchase order | PO-48291 | PO-48291 · open | ✓matches |
| Amount | $18,420.00 USD | $18,420.00 · within tolerance | ✓matches |
| Bank details | account ••••4471 | account ••••9021 | ≠differs |
Account changed since the last paid invoice · unverified channel
Payment details differ from the trusted vendor record. Possible invoice redirection fraud.
- Rule fired
BANK_DETAILS_CHANGED- Fields
bank_details.account_number_last4,bank_details.sort_code- Requirement
independent_bank_verification- Recommended action
REQUEST_VENDOR_BANK_VERIFICATION- Owner
VENDOR_MANAGEMENT- decision_if_resolved
- Process
Deterministic · rules 1.3.0 · resolution catalogue 1.4.0
Extraction tells you what the document says.
Maqaas tells you what your system should do.
- 01
Extract
Documents and payloads arrive as structured fields, each with its own source locator and snippet.
- 02
Verify
Every value is checked back against the document text and against the PO and vendor records you supply.
- 03
Decide
Deterministic rules return PROCESS, REVIEW, HOLD_FOR_REVIEW, ESCALATE or REQUEST_MORE_INFORMATION — never a score. BLOCK is reserved and is not currently emitted by any rule.
- 04
Explain
Each decision carries the rules fired, their evidence, field-level confidence and verification state.
- 05
Resolve
Blockers arrive with requirements, an owner, an ordered plan, and the decision if they were cleared.
Every fact carries its own paper trail.
Auditability is not a report you generate later. Each field arrives with its value, its confidence, whether it could be verified against the source, and where in the document it was read.
- Field-level confidence, never a single document score
- Source verification against the document and your systems of record
- Provenance carried as a locator and the exact snippet the value came from
- Confidence
- 0.96
- Source verified
- Yes · exact
- Locator
attachment:invoice.pdf
The model understands the document.
Your rules decide what happens.
- Layer 01 · probabilistic
AI understanding layer
Reads documents, normalises fields, and proposes values with a confidence and a source.
- Boundary
Verified facts
A value that cannot be tied back to the document is capped, not trusted. Only verified facts carry full weight into the decision.
- Layer 02 · deterministic
Deterministic decision engine
Versioned rule code. The same inputs at the same rules version produce the same decision — no model involved.
- Output
Explainable decision
Decision, rules fired, evidence, blocking conditions, and the resolution path.
Language models are excellent at reading and poor at accountability. Maqaas keeps the two concerns strictly apart: the model proposes, the rules decide, and only the rules are allowed to change an outcome.
-
INVOICE_PO_VARIANCEpassed -
CURRENCY_MISMATCHpassed -
DUPLICATE_INVOICE_NUMBERpassed -
BANK_DETAILS_CHANGEDfired
Three passed. One fired. The outcome is not a score — it is a rule you can name.
A flag is not an answer.
Maqaas returns the way out.
For every held or blocked invoice the response states what is wrong, what would clear it, who should act, and what the decision becomes once it is cleared — computed deterministically, not predicted.
- 01 · Blocker
Bank details changed
Payment details differ from the trusted vendor record on account and sort code.
- 02 · Required
Independent bank verification
Out-of-band confirmation through a channel not taken from the invoice itself.
- 03 · Action
REQUEST_VENDOR_BANK_VERIFICATION
A closed enum your workflow can switch on, owned by VENDOR_MANAGEMENT.
- 04 · If resolved
PROCESS
Re-run of the real engine with the blocker set aside and every other fact unchanged.
One endpoint.
A decision you can defend.
Send facts and context. Get a decision object your workflow can branch on — typed, versioned, and fully explained.
POST /v1/invoice/decision
Authorization: Bearer <your-api-key>
{
"extracted_facts": {
"vendor_name": { "value": "Northstar Components" },
"invoice_number": { "value": "INV-9931" },
"invoice_total": { "value": { "amount": 18420.00, "currency": "USD" } },
"po_number": { "value": "PO-48291" },
"bank_details": { "value": { "account_number_last4": "4471" } }
},
"po_context": { "po_number": "PO-48291", "status": "open" },
"vendor_context": {
"vendor_id": "V-2201",
"trusted_bank_details": { "account_number_last4": "9021" }
},
"rules": { "require_po": true, "allowed_variance_pct": 0.05 }
} 200 OK
{
"decision": "HOLD_FOR_REVIEW",
"needs_review": true,
"recommended_route": "accounts_payable_manager",
"versions": { "api": "v1", "rules": "1.3.0", "resolution_catalog": "1.4.0" },
"resolution": {
"blocking_conditions": [
{ "rule_id": "BANK_DETAILS_CHANGED",
"evidence": { "expected": "account_number_last4=9021",
"observed": "account_number_last4=4471" } }
],
"resolution_requirements": [
{ "requirement_type": "independent_bank_verification" }
],
"recommended_action": "REQUEST_VENDOR_BANK_VERIFICATION",
"resolution_plan": [
{ "step": 1, "action": "REQUEST_VENDOR_BANK_VERIFICATION",
"owner": "VENDOR_MANAGEMENT" },
{ "step": 2, "action": "RESUBMIT_FOR_DECISION", "owner": "HOST_SYSTEM" }
],
"decision_if_resolved": { "decision": "PROCESS" }
}
} - Two endpoints
- Facts or a PDF — same response contract
- Typed contract
- Versioned schema, OpenAPI 3.1
- Six outcomes
- Never a bare score
- Synchronous
- One request, one decision
Keep your workflow, UI, and customer relationship.
Embed Maqaas underneath as the decision layer. Your product stays the product — it simply becomes one that can explain itself.
Built for procurement and AP platforms
- Procurement SaaS
- AP platforms
- Vendor-management platforms
- ERP extensions
- Vertical SaaS
- Internal enterprise AP
Built to handle financial data without becoming your system of record.
- 01 · Data path
No business-document persistence
Invoice, PO, vendor and policy payloads — and the extracted facts, evidence, prompts and model responses derived from them — are used to produce the decision and are not retained by Maqaas as a system of record.
- 02 · What is stored
Account and service records
Tenant, API-key metadata, plan and usage counters are persisted — the records needed to run an account. Business document content is not part of them.
- 03 · Access
Tenant-isolated authentication
Scoped keys per tenant and environment. Keys are stored as verifiers only, never in plaintext, with rotation and revocation.
- 04 · Logging
Redacted logging
Operational telemetry and diagnostic metadata may include request and tenant identifiers, route, status, latency, decision-related metadata, and limited error context. In some document-extraction failure scenarios the submitted filename may appear in operational logs. Redaction is applied so that plaintext credentials and business-document contents are not intentionally logged as ordinary application telemetry.
- 05 · Execution
Deterministic policy execution
Rules run as versioned code, so the same inputs at the same rules version reproduce the same decision under audit.
- 06 · Boundaries
No autonomous payments
Maqaas recommends and explains. It does not move money, change bank details, contact a vendor, or act on your behalf.
Maqaas is not currently SOC 2 certified. Security and incident-response processes are documented, and readiness work is in progress; that documentation is available under NDA.
Add explainable decisions to your AP product.
We are working with a small number of procurement and AP software teams as design partners. If that is you, we would like to hear what you are deciding today and where it breaks.