Skip to content
Developer guide

Multi-merchant / multi-shop

Hierarchy of Merchant → Shop → API Key — when you need to pass `merchantId` / `shopId` on POST /payments and how rate limits / fees roll up.

Context and key considerations

Every account is structured as Merchant → Shop → API key pair. A merchant is the legal entity that signed the contract; a shop is an operational unit under that merchant (one URL, one brand, one payout config). Each shop has its own apiKey + secretKey pair, scoped to that shop. The vast majority of integrations are single-merchant + single-shop — but the hierarchy exists so SaaS platforms / marketplaces can fan transactions across multiple shops under one merchant, or multiple merchants under one operator account.

1 / 4

The hierarchy

text
Merchant (MCH-XXX)         ← legal entity, KYB on file, settlement payout config
  │
  ├─ Shop A (SHP-XXX)        ← brand A, paymentMethodIds[], methodFees{}
  │    ├─ pk_test_… / sk_test_…   (sandbox keys for Shop A)
  │    └─ pk_live_… / sk_live_…   (production keys for Shop A)
  │
  └─ Shop B (SHP-YYY)        ← brand B, different methods enabled, different fees
       ├─ pk_test_… / sk_test_…
       └─ pk_live_… / sk_live_…
A merchant can have N shops. Each shop is independent in terms of which payment methods are enabled, which fees apply, and which brand renders on hosted checkout. The merchant rolls up the balance — settlement happens at the merchant level, not per-shop.
Key2Pay Developer documentationAPI v1
Documentation
Dashboard