Onboarding Merchants
This page walks the complete path a merchant takes from your platform into Wava, and what you receive at each point. It is the flow behind thestore_onboarded webhook.
1. Your onboarding link
Wava issues you an onboarding link when your partner account is created, together with your production credentials. It is the Wava signup page carrying your partner name in theplatform query parameter:
YourPartnerName is the partner name registered on your account — the same name Wava uses to resolve your integration. It is fixed at account creation; you do not choose it per merchant.
This is the same mechanism the Tiendanube and WooCommerce integrations use, and it is what drives the automatic connection in step 2. There is nothing to configure on your side beyond putting the link in front of your merchants — in your onboarding emails, your dashboard, your setup wizard.
The link is per-partner, not per-merchant. You do not generate a new link per merchant and you do not pre-register merchants with Wava.
Passing your own merchant ID
Addeid to carry your internal identifier for that merchant:
external_store_id and comes back to you in every webhook — as external_id in store_onboarded and as external_store_id in order events — so you can match events to your own records without keeping a lookup table.
Generate the link per merchant from your own system if you want this. It is optional: without it the field arrives as null and you match on id_store, which is always present.
eid is a single reference string (up to 80 characters), not an arbitrary metadata object. Use it for your own merchant or account ID.2. The merchant signs up — the integration is automatic
The merchant follows the link, creates their Wava account and completes onboarding (business details, documents, payout account). As soon as onboarding finishes and the store becomes active, Wava reads theplatform value carried from the link, resolves it to your partner account, and creates the integration automatically. The merchant does not have to find your platform in a settings screen.
The integration created on the merchant’s store is:
platform: your partner name (e.g.Mercately)platform_type:partnerallowed_scopes: copied from your partner account, so the merchant is operated with exactly the permissions you were approved forexternal_store_id: theeidfrom the link, if you passed one
draft:
Your
X-API-Key/X-API-Secret are not involved here and cannot be used to connect a merchant to you. The link is the mechanism.Re-subscribing
A merchant can go through your link again — after you or they disconnected, or simply to refresh the connection. Every time they do, the integration is brought back to active, theeid on the link is written to the store, and you receive store_onboarded again.
3. You receive store_onboarded
The moment the integration is created, Wava POSTs store_onboarded to the webhook URL configured on your partner account. This is the event that hands you a merchant you can start charging for.
Request headers on that POST:
4. You store the merchant key and start processing
Persistid_store and merchant_key against your own merchant record. From then on:
5. Payment events come back to you
Once an order for that merchant is paid, Wava sendsorder_payment to your webhook URL — the same URL that received store_onboarded — because the merchant’s store carries your partner integration. Payment-link orders created via the API also emit link_paid.
You receive these for every merchant connected to you. Use id_store (or external_store_id) in the payload to route the event to the right merchant on your side.
See Partner Webhooks for the payloads.
6. Disconnecting
Either side can end the relationship:- You:
POST /v1/partners/stores/{storeId}/deactivatedeactivates your integration on that merchant’s store. - The merchant: deactivating your integration from their dashboard.
GET /v1/partners/stores, and its events stop reaching your webhook URL. The merchant’s Wava account and its merchant key continue to exist — they are simply no longer yours to operate.
The relationship can be re-established at any time by sending the merchant through your onboarding link again, which brings the integration back and re-delivers store_onboarded.
Reconciling
store_onboarded is a notification, not a ledger. Treat GET /v1/partners/stores as the source of truth for who is connected to you, and reconcile against it periodically to catch merchants who connected while your endpoint was down.