Skip to main content
The aggregate merchant provisioner accepts merchant payloads, applies the partnership-PSP preset for the merchant’s region / cohort, and persists the merchant with PSP configuration already wired. This eliminates the historical 3-step dance (create merchant → write PSP config → flip KYB flag) that operators used to walk by hand.
All admin endpoints below require:
  • JWT with role = SUPER_ADMIN
  • IpAllowlistGuard — caller IP must be in the operator allowlist
  • GeoBlockGuard — caller geo must be permitted
Calls that miss any of the three return 403.

Partnership-PSP preset

Each merchant payload includes a partnership field. The provisioner reads the partnership registry and applies the matching preset: If partnership is omitted, the provisioner falls back to the region default (documented in the PSP × MoR cohort taxonomy).

POST /admin/aggregate-merchant-provisioner/single

Provisions one merchant.

Authentication

Request body

Response — 201 Created

Error responses

Example

POST /admin/aggregate-merchant-provisioner/bulk

Provisions an array of merchants. Each entry is attempted independently — a failure on one does not abort the batch. The response partitions results into successful and failed.

Request body

Response — 207 Multi-Status

Error responses

The batch HTTP status is 207 Multi-Status whenever at least one entry succeeds and at least one fails; 201 when all succeed; 400 when all fail validation.

GET /admin/aggregate-merchant-provisioner/preview

Dry-run: validates payloads and resolves partnership presets, but does not write. Useful for “what would happen if I bulk-provisioned this CSV?” before committing. Accepts the same body shape as the bulk endpoint, sent via GET with the payload in the request body (Mintlify renders this — the backend reads JSON from the request body on this route specifically).

Response — 200 OK

Example

Operational notes

  • Idempotency: the provisioner is not idempotent. Re-submitting the same email returns 409. Use the preview endpoint to scrub a CSV before running bulk.
  • Email invitations: the owner-user invitation email is sent synchronously on successful provision. If your operator workflow sends a custom welcome email, set options.skipInvitationEmail (boolean, default false).
  • Cohort routing: the kybCohort field flows downstream into the lending eligibility, cost-comparator, and affiliate-commission projections. Choose intentionally.
  • Bonum admin — per-merchant Bonum config (set after provisioning when partnership = mcredit-bonum-mn).
  • Telr admin — Telr reconcile for partnerships that wire Telr.
  • Network Health KPIs — track verified-shops + GMV growth after bulk provisioning.