ERP integration · payment-time read
One call before the payment goes out — and the receipt your rule reads
Your payment run asks one question before release: is there a dated read of the exclusion files under this vendor's exact name and key? POST /api/ap/check answers with the read itself — per source, answered with n rows or did not answer — plus a hash you can replay and a receipt URL for the auditor. It does not answer "should we pay": that rule is yours, and the receipt is what your rule reads.
Why there is no records_found: 0 and no "pre-clearance": a zero that silently includes a source that did not answer is exactly the exposure a hospital carries under the Civil Monetary Penalties Law between monthly checks. So each source prints its own state, and two facts are given for the branch: all_list_sources_answered and exact_rows_total. A silent source is never a zero.
The call
POST https://alphacovenantholdings.com/api/ap/check
X-Api-Key: acv_…
Content-Type: application/json
{"name": "Example Vendor LLC", "uei": "ABC123DEF456", "partner_reference": "PO-44812"}What comes back
{
"contract": "ap-view/1",
"receipt_id": "r_…",
"read_at": "2026-10-24T13:05:00+00:00",
"name_as_submitted": "Example Vendor LLC",
"keys": {"uei": "ABC123DEF456"},
"payer_reference": "PO-44812",
"sources": [
{"source": "sam", "state": "answered", "exact_rows": 0, "similar_shown": 2, "file_as_of": "2026-10-24", "official_url": "https://sam.gov/…"},
{"source": "leie", "state": "answered", "exact_rows": 0, "similar_shown": 0, "file_as_of": "2026-10-10", "official_url": "https://exclusions.oig.hhs.gov/"},
{"source": "ofac", "state": "did_not_answer", "exact_rows": null, "similar_shown": 0}
],
"exact_rows_total": 0,
"all_list_sources_answered": false,
"list_sources_did_not_answer": ["ofac"],
"decision": null,
"decision_belongs_to": "payer",
"receipt_sha256": "…", "receipt_url": "https://alphacovenantholdings.com/api/receipts/r_…",
"sha256": "…"
}The branch (yours to write — examples)
all_list_sources_answered && exact_rows_total == 0→ release automatically; storereceipt_idandsha256on the payment document.!all_list_sources_answered→ route to a person;list_sources_did_not_answernames what was silent; do not treat it as zero.exact_rows_total > 0orsimilar_shown > 0→ a person opens theofficial_urlrows before release; the receipt records that they were shown.
Where it plugs in
| SAP S/4HANA, Ariba | Call /api/ap/check from the vendor-release or payment-run BAdI; branch on all_list_sources_answered and exact_rows_total; store receipt_id and sha256 on the vendor master or the payment document. |
|---|---|
| Workday | Supplier or Settlement Run integration (Studio or EIB): one call per supplier before settlement; write receipt_id to a custom field; route did_not_answer to a business process step for a person. |
| Oracle NetSuite | SuiteScript user event on Vendor Bill approval or Payment creation; same two fields; the receipt URL goes in the memo so the auditor can open it from the bill. |
| Workday / Oracle / Infor / anything else | For a monthly or weekly run, POST the vendor CSV to /api/batch with a webhook_url; the signed webhook (X-Alpha-Covenant-Sha256) carries every receipt id; call /api/ap/view per id or read the results CSV. |
Keys, limits, price
- Keys accepted: UEI, NPI, EIN, CIK, CCN, LEI, CAGE, EORI, USCC. Your own reference (PO, voucher, award) is printed and hashed on the receipt, never looked up.
- Auth: the partner API key; price is the partner API tier at /pricing — flat monthly plus metered rows to a stated ceiling, no overage beyond it. 501(c)(3)s in IRS Pub 78: no charge.
- Behaviour under load: 40 receipts build at once; past that the call answers 429 with Retry-After rather than thinning the read. For a payment run over ~40 names use the batch with a webhook.
- Replay:
POST /api/ap/verifyrecomputes the view's SHA-256 without a key; the receipt itself carries an Ed25519 certification and, as a Verifiable Credential, an ML-DSA-65 proof.
Full contract, HTTP behaviour and measured timings: /api/ap/contract.html · partner spec /api/batch/spec · for the questionnaire your vendor desk will send us: vendor diligence packet.