# Integration Status

## KRA eTIMS OSCU

Implemented: sandbox/production endpoint selection, official HTTPS host validation, communication-key protection, invoice payload construction, tax bands, idempotent request records, queued submission, response and receipt data persistence, failure recording, exponential job retry, scheduled bounded recovery, and operator-visible attempt/error status.

Production dependency: Morbrick KRA PIN, branch ID, communication key, SDC ID, registered item classification/unit codes, production endpoint approval, and KRA acceptance evidence. Invoice submission must remain in sandbox until those are supplied.

## Safaricom M-Pesa Daraja

Current supported operation is manual recording of a completed M-Pesa payment with a unique receipt number. The repository contains a non-production Daraja service placeholder; it is not wired into routes or accounting records and must not be represented as live automation.

Production dependency: approved Daraja application, consumer credentials, shortcode/passkey, public TLS callback URL, callback transaction persistence, replay/idempotency tests, amount/account matching, reconciliation/query API, and finance UAT. Safaricom’s official Daraja portal is the authoritative onboarding source.

## Email and WhatsApp

Laravel mail infrastructure exists for authentication mail. Quote/proforma/invoice delivery tracking is not yet implemented. Production requires a verified SMTP/API sender domain and queue failure monitoring. WhatsApp delivery requires either user-launched deep links or an approved WhatsApp Business provider; the system must not claim successful delivery merely because a link was opened.

## Public verification

Receipts and completion certificates use signed, throttled public URLs. Production requires a stable HTTPS `APP_URL`, correct trusted proxy configuration, and long-term preservation of the signing application key. Rotating `APP_KEY` invalidates existing encrypted data and signed verification URLs unless a controlled key migration strategy is used.

