This guide walks you through creating a merchant account, submitting business verification (KYB), and finding your way around the dashboard. It’s for the person at your company who owns the SohoPay relationship — typically a founder, finance lead, or platform engineer.

Signup flow

Registration happens in the SohoPay Dashboard — there is no API for account creation.
  1. Go to the dashboard and choose Sign up → Merchant.
  2. Verify your work email.
  3. Pick an environment: Developer sandbox or Production.
Sandbox accounts are live immediately with a test merchant ID (mch_...). Production accounts require KYB before they can receive real settlements.
Create a sandbox account even if you’re heading straight to production. KYB review takes 1–3 business days — your engineers can build the full integration against sandbox while verification runs in parallel.

KYB requirements

KYB (Know Your Business) verification is required for all merchants on mainnet. You’ll need: Supporting documents (certificate of incorporation, proof of address) are uploaded in the same form. All documents must be current — registries older than 12 months are commonly rejected.
Double-check the payout address. Settlements are on-chain USDC transfers to this address and cannot be reversed. Use an address your organization controls, ideally a multisig.

Verification timeline

Verification is powered by Didit and typically completes in 1–3 business days. You’ll see status in the dashboard under Settings → Verification, and SohoPay emits webhook events when the decision lands:
  • merchant.kyb.approved — you can accept mainnet payments
  • merchant.kyb.rejected — see the rejection reason in the dashboard
Wire up webhooks early if you want programmatic notification instead of watching the dashboard.
Sandbox skips KYB entirely. Sandbox merchant accounts are approved instantly and run on Base Sepolia with test funds. Nothing in this section blocks sandbox development.

Troubleshooting KYB rejection

Most rejections fall into three buckets:
SohoPay cannot onboard merchants in certain restricted categories (e.g. gambling, adult content, sanctioned jurisdictions). This is a compliance constraint, not a review error — if your business genuinely falls outside these categories, reply to the rejection email with a description of your actual business activity and supporting documentation.
The most common rejection. The legal entity name on your registration certificate doesn’t exactly match what you typed in the form, or the registration number belongs to a different entity (e.g. a parent company). Fix: resubmit with the name copied character-for-character from the official document.
The named signer isn’t listed in the company registry as a director or officer, or their ID document was unreadable. Fix: either name a registered officer, or upload a power of attorney showing the signer’s authority, plus a clear ID scan.
You can resubmit directly from Settings → Verification → Resubmit — there is no cooldown. If you’ve been rejected twice or believe the decision is wrong, escalate to support@sohopay.xyz with your merchant ID and the req_ request ID from the rejection notice. Normal-priority support responds within 8 hours.

Dashboard walkthrough

Once you’re in, four areas matter for merchants:
1

Settings → API Keys

Create your first key. Sandbox keys start with sk_test_, mainnet keys with sk_live_. Keys are shown once — store them in a secrets manager, never in code. See Authentication & Security.
2

Agents → Allowlist

The UI view of your agent allowlist. Empty at first — no agent can pay you until you add one here or via the API.
3

Settlements

Every payment that has settled to your payout address, with on-chain transaction hashes and CSV export. Covered in Settlements and payouts.
4

Developers → Webhooks

Register webhook endpoints and inspect delivery logs. The Live Feed next to it shows events streaming in real time — useful while testing.

Test it

Before moving on, confirm in sandbox:
  • You can log in to the dashboard and see a mch_... merchant ID under Settings
  • You created an API key and a GET /merchants/{id} call with it returns 200
  • (Production only) KYB status shows approved, and you received merchant.kyb.approved if a webhook is registered
  • Your payout address is set and correct — verify the checksummed address character by character

Next steps

Allowlist Management

Add your first agent so payments can start flowing.

KYB Reference

Full verification policy, document requirements, and re-review rules.

Webhooks

Get notified programmatically when KYB is decided.