Vendor onboarding
## Vendor Onboarding Flow
Onboarding vendors (or "partners") efficiently is key to managing your payments. A common challenge is that the email address you use to invite a vendor might not be the same one they use for their Lumanu account.
To solve this and prevent duplicate records, we use a Lumanu ID—a unique, immutable identifier for every vendor. The goal of the onboarding flow is to reliably retrieve and store this Lumanu ID for all your partners.
The Recommended Onboarding Flow
We recommend the following asynchronous process using webhooks to ensure you always have the correct Lumanu ID for a vendor, even if they sign up with a different email address.
-
Check for an Existing
Lumanu ID: Before inviting a new vendor, first check your own system to see if you have already stored aLumanu IDfor them. If you have one, you can skip the invitation process entirely and use that ID for all future API calls. -
Send the Partner Invite: If you don't have a
Lumanu ID, send an invitation using the vendor's email address.- API Call:
POST /workspace/{id}/partner/invite
- API Call:
-
Store the Invitation ID: The API response will contain a unique
invitation_id. You must store this ID and associate it with the pending vendor in your database. This ID is the key to linking the invitation to the vendor who eventually signs up. -
Receive the
partner-invite.claimedWebhook: When the vendor clicks the invite link and successfully signs up or logs in, the Lumanu platform will send apartner-invite.claimedwebhook to your registered endpoint. This webhook payload will contain both the originalinvitation_idand the vendor's permanentLumanu ID. -
Match and Store the
Lumanu ID: Your application should use theinvitation_idfrom the webhook to look up the pending vendor you stored in step 3. Once matched, save theLumanu IDfrom the webhook to that vendor's record. You can now use this ID as a reliable, permanent identifier for the vendor.
Interaction Diagram
This diagram illustrates the asynchronous flow of inviting a partner and receiving their permanent Lumanu ID.
sequenceDiagram
participant Client App as Client Application
participant LumanuAPI as Lumanu API
participant Partner as Vendor / Partner
alt Lumanu ID not found in local DB
Client App->>+LumanuAPI: 1. POST /workspace/{id}/partner/invite
LumanuAPI-->>-Client App: 2. Returns { invitation_id }
Client App->>Client App: 3. Store invitation_id with pending vendor record
LumanuAPI-->>Partner: 4. Sends email invitation
Partner-->>LumanuAPI: 5. Clicks link, signs up or logs in
LumanuAPI-->>Client App: 6. Webhook: `partner-invite.claimed` <br/> (payload includes invitation_id and lumanu_id)
Client App->>Client App: 7. Match invitation_id, <br/> store permanent lumanu_id
endUpdated 3 months ago