A merchant (acc_xxx) is the CRM organization: it owns stores, products, orders, customers, subscriptions, and CRM Keys. This page covers provisioning merchants and minting CRM Keys on the CRM domain (/api/public/v1/partner/*).
CRM-only is valid. A merchant does not need a TPA. If your product only uses the merchant control plane (catalog, orders, customers, subscriptions) and processes payments elsewhere, you never have to touch the Processing domain. When you do want TagadaPay to process cards, provision a TPA for the merchant afterwards.
const partner = new Tagada(process.env.TAGADA_PARTNER_KEY!);const merchant = await partner.partners.crm.merchants.create({ legalName: 'Acme SAS', country: 'FR', // ISO 3166-1 alpha-2 (optional) currency: 'EUR', // ISO 4217 (optional) externalRef: 'merchant_42', // YOUR id — used for idempotency metadata: { plan: 'pro' },});// →// {// object: 'merchant',// id: 'acc_xxx',// legalName: 'Acme SAS',// externalRef: 'merchant_42',// country: null, // not stored on the merchant — see note below// currency: null,// managementMode: 'partner_managed',// createdAt: '2026-04-29T…',// }
Creating a merchant also auto-provisions a default store (store_xxx) so the CRM is immediately usable.
country / currency you pass on create() are provisioning inputs — currency sets the auto-created store’s base currency. They are not stored on the merchant object itself, so the response always returns country: null and currency: null. Read per-store currency back via the CRM stores API.
The token is returned only on creation. Store it in your secret manager immediately. Existing UUID tokens keep working — only newly minted keys use the sk_crm_… format.