What the Policy Service is
Under the 2-of-3 threshold scheme, an agent’s key share expresses intent to pay; the Policy Service’s share expresses approval. Because two shares are required for a valid signature and the future third-party share is not yet active, the Policy Service is in the signing path of every settlement today. That makes it the enforcement point for the whole protocol: policy isn’t checked alongside payments, it is a cryptographic precondition of them. This is the practical difference from a conventional payments API, where rules live in application middleware. An attacker who compromises an agent — or even parts of SohoPay’s own API layer — still cannot produce a settleable signature for a payment that violates policy.Rules enforced
Before contributing its signature share, the Policy Service evaluates every payment against four rule classes:
A payment that fails a check is rejected with a specific error rather than silently dropped:
AGENT_NOT_ALLOWLISTED (403), INSUFFICIENT_CREDIT (402), RATE_LIMITED (429 with Retry-After), or AML_DECLINED (402). Handling for each is covered in Error Handling.
On-chain vs off-chain enforcement
The two enforcement layers trade flexibility for trust guarantees, deliberately:- On-chain (allowlist). The allowlist predicate lives on Base. Even a fully compromised Policy Service could not settle a payment to a non-allowlisted address — the chain itself would reject it. This is the trust boundary operators can verify independently on Basescan, and it’s why the allowlist is the one rule that is slow to change but impossible to bypass (see Trust Model).
- Off-chain (credit, rate limits, AML). These rules need data the chain doesn’t have (real-time credit ledgers, screening providers) and need to change faster than contract upgrades allow — a new AML list should apply in minutes, not after a deployment. They are enforced at co-signing time, which is still before any funds can move.
Availability is payments-grade
Because the Policy Service sits in the signing path of every settlement, its availability is SohoPay’s availability. It is operated against the platform-wide 99.9% uptime target, with the same maintenance window (Sundays 02:00–02:30 UTC, announced a week ahead) and support response commitments. Full details in the SLA.What happens when it’s down
The system is fail-closed by design: if the Policy Service is unreachable, no settlements occur. There is no fallback signer and no degraded mode — that is the security guarantee, not a limitation. Concretely, during an outage:- Payment submissions are accepted and queued, not rejected — you’ll see payments hold in a pending state rather than fail.
- No new co-signatures are issued, so nothing settles and no funds move.
- On recovery, queued payments are evaluated against current policy and settle in order. Orders that exceeded the 10-minute TTL during the outage expire with
ORDER_EXPIREDand must be recreated. - Normal
payment.settled/payment.failedwebhooks fire as the queue drains, so downstream systems reconcile automatically.
Monitoring
Two ways to see the Policy Service’s health:-
Status endpoint.
GET /statuson either environment reports component health, including the policy/co-signing path:Response - Observatory dashboard. The Observatory shows live co-signing latency, policy decision rates, and queue depth, so you can distinguish “payments are slow” from “payments are queued behind an incident”.
Common questions
Can I bypass or disable the Policy Service for my own agents?
Can I bypass or disable the Policy Service for my own agents?
No. The co-signature is a cryptographic requirement of the 2-of-3 scheme, not an optional feature flag. What you can control is the policy inputs: your agents’ allowlists, credit limits, and daily limits.
Can I add custom policies?
Can I add custom policies?
Per-merchant custom policy rules are on the roadmap. Today the configurable levers are the allowlist, per-agent credit and daily limits, and rate limits.
Does policy evaluation add latency?
Does policy evaluation add latency?
Checks run in the co-signing path before on-chain submission. End-to-end settlement — policy evaluation included — typically completes in about a second on Base.
Next steps
MPC Signing
The 2-of-3 threshold scheme the Policy Service co-signs within.
Allowlist Management
Managing the on-chain allowlist that bounds where agents can pay.
SLA & Availability
Uptime targets, maintenance windows, and support response times.

