How agent keys work
When you create an agent, its key is generated inside SohoPay’s MPC signing infrastructure as a 2-of-3 threshold key. The three shares are:- Agent share — used to sign on the agent’s behalf.
- Policy Service share — held by the Policy Service, which co-signs only after every payment passes allowlist, credit, rate-limit, and AML checks.
- Third-party share — a future third key on the roadmap; today the third slot is the cold backup share (see disaster recovery below).
- You never receive a raw private key. The complete key never exists in one place — not at generation, not during signing, not in any API response. There is nothing for you to store, leak, or commit to git.
- No single share can spend. A payment signature requires 2-of-3, and the Policy Service share only participates after policy checks pass. If the Policy Service is unavailable, no settlements happen — the system fails closed.
Your operational burden is the API key (
sk_test_... / sk_live_...), not the agent key. Anyone with your API key can create orders and submit payments for your agents, so protect it as described in Authentication & Security.Key rotation
Rotation generates fresh MPC shares for an agent and retires the old ones. The agent’swallet_address and agent_id are unchanged — rotation is invisible to merchants and to in-flight orders.
Rotate when:
- A team member with production access leaves.
- You suspect any compromise of the systems that call the SohoPay API for this agent.
- Your security policy mandates periodic rotation.
A self-serve
POST /agents/{agent_id}/rotate endpoint is on the roadmap and not yet available. Until it ships, use the dashboard or support@sohopay.xyz for rotations.agent.key_rotated webhook:
agent.key_rotated
Disaster recovery
The third key slot holds a cold backup share kept in escrow, offline and outside the hot signing path. If the agent share or the Policy Service share is lost or corrupted, the cold share restores the 2-of-3 quorum so the wallet’s funds and credit position are never stranded behind a single lost share. Recovery is operated by SohoPay under a documented runbook:- You (or SohoPay’s monitoring) report a suspected share loss to support — critical issues get an under-1-hour response per the SLA.
- SohoPay pauses the affected agent, so no payments sign during recovery.
- The cold share is brought online in a controlled ceremony, the quorum is re-established, and fresh shares are generated (a forced rotation).
- You receive an
agent.key_rotatedwebhook and the agent is unpaused.
Security attestation
An independent audit of the MPC signing infrastructure and vault contracts by Olympix is in progress and not yet published. SohoPay is pre-mainnet; the report will be linked from this page when available. SOC 2 is planned post-launch — see the roadmap items in Trust Model.
Best practices
A short checklist for production operators:- Rotate on personnel change. Any time someone with production API access or dashboard admin rights leaves, rotate affected agents’ keys and your API keys the same day.
- Monitor
agent.key_rotatedevents. Every rotation should map to a change ticket you recognize. Alert on ones you can’t match. - Pause the agent before a planned rotation. Pausing from the dashboard drains in-flight payments cleanly, so nothing is signing mid-rotation. Unpause after the
agent.key_rotatedevent arrives. - Keep limits tight.
daily_limitis your real blast-radius control — key compromise plus a tight daily limit is an incident; key compromise plus an open limit is a loss. See Agent Setup. - Separate sandbox and mainnet credentials. Different keys, different secret-manager entries, different IAM access.
- Log
request_idon every API call so support can trace any suspicious signing activity quickly.
Next steps
MPC Signing
The 2-of-3 threshold scheme in protocol-level detail.
Webhooks
Verify signatures and handle agent.key_rotated events.
Vault & Funding
Fund the vault that backs your agents’ credit lines.

