Documentation Index
Fetch the complete documentation index at: https://docs.tagada.io/llms.txt
Use this file to discover all available pages before exploring further.
Sub-merchant provisioning
Every merchant your platform onboards becomes a TagadaPay Account (TPA) — identifier prefixtpa_xxx. The TPA is the unit of KYB, payment routing, settlement, and authorization scope.
What gets created
When you callpartners.accounts.create(), three database rows are inserted in one atomic operation:
The merchant is never auto-invited. No email is sent, no Clerk user is created, no portal access link generated. The
accounts row exists only as the data-ownership anchor — it’s invisible to the merchant unless your platform later decides to graduate them to direct TagadaPay access.Create a sub-merchant
Idempotency
If you callcreate() again with the same externalRef, you get back the same TPA. No duplicates. This makes retries safe:
(partnerId, externalRef) pair is recorded, it’s permanent. Choose a stable, unique ref (your own merchant id is the natural choice).
Retrieve / list
Update a sub-merchant
metadata, partnerExternalRef, and merchantContractSnapshot fields. Status transitions and KYB outcomes are operator-driven (your account manager moves them, or our auto-router does).
Re-pointing a TPA to a different store
Coming soon. TPA re-pointing — moving a TPA from its
auto-provisioned store to a different store inside the same
accounts row — is on the roadmap but not yet exposed via the
public API. If you have an operational need (rebrand, post-launch
storefront swap, …) contact your account manager and we’ll
move the binding for you. The SDK method
partner.partners.accounts.repointStore() is intentionally stubbed
to throw route_not_implemented until the backend route ships, so
no partner code can rely on it silently.KYB requirements
Every newly-created TPA is seeded with a default set of KYB requirements:| Code | Category | Description |
|---|---|---|
business.legal_name | business | Exact legal name |
business.registration_number | business | Company registration number |
business.country | business | Country of registration |
business.vat_number | business | VAT number (where applicable) |
business.website | business | Public URL |
representative.full_name | representative | Legal representative |
representative.dob | representative | Date of birth |
representative.address | representative | Residential address |
documents.identity_proof | documents | Government ID |
documents.proof_of_address | documents | < 3 months old |
documents.company_registration | documents | Registration certificate |
banking.iban | banking | Settlement IBAN (must match company) |
applicationPreferences.defaultRequirements — talk to your account manager.
List + satisfy requirements
pending_verification. We don’t auto-approve — manual review (or processor-driven verification) flips it to satisfied.
Merchant portal access policy
By default, sub-merchants have no TagadaPay portal access. They use your platform, not ours. If you ever want a specific merchant to be able to log in directly to TagadaPay (advanced reporting, dispute responses, etc.), three policy modes exist:| Mode | Behavior |
|---|---|
'never' | Merchant never gets a TagadaPay login. Operators see a warning if they try to invite. |
'on_request' (default) | Stub accounts row exists, no auto-invite. Invitations are dispatched out-of-band by your account manager — the public partners.accounts.invite() method is on the roadmap and currently throws route_not_implemented. |
'auto_invite' | Send the merchant a magic link the moment the TPA is created. Use only if the merchant expects a TagadaPay-branded portal. |
applicationPreferences.merchantPortalAccess (talk to your account manager), or override per-account at creation time.
For the typical embedded-payments partner (your merchants don’t know TagadaPay exists),
'never' is the right setting and prevents any accidental email leak even if an operator clicks the wrong button.What you cannot do as a partner
| Action | Why |
|---|---|
| Read another partner’s TPAs | Partner key scope: you only see TPAs where partnerId = your_par_xxx |
Move a TPA across accounts rows | Would cross merchant entities — refused server-side |
| Delete a TPA | TPAs are status-archived (offboarded), never deleted — required for audit/payout history |
| Edit KYB-locked fields after activation | legalName, country, currency become immutable once the TPA reaches active |
