Linked accounts
Link PayMongo accounts in a parent / child relationship to invite, onboard, and operate on other accounts through the Accounts API.
Invite a new account by email
You can link a brand-new business or individual to your account by inviting them with their email address. This is for people who don't have a PayMongo account yet. Once they sign up and finish onboarding, they become your linked child account, and you can transact on their behalf.
There are two ways to do this, and this page covers both:
| Method | Best for | What it takes |
|---|---|---|
| Merchant Dashboard | Linking one or a few accounts by hand | Point-and-click, no code |
| API | Platforms that link accounts programmatically or at scale | A few API calls with your secret key |
Both methods do the same thing behind the scenes, and they end the same way: your invitee receives a signup link, creates their PayMongo account, and completes standard onboarding.
Two things to know before you begin
- PayMongo does not send the invitation email for you. You generate a signup link and share it with your invitee through your own channel, such as your email or chat.
- The email must match. Your invitee has to sign up using the exact email address you invited. Signup is rejected if the email is different.
What you'll need
- Access to the parent account, which is the one doing the inviting.
- Permission to send invitations. In the Dashboard, this is the Invite button on the Linked Accounts page. If you don't see it, contact support to enable Linked Accounts. For the API, you'll use your account's secret API key.
- Your invitee's email address.
Method 1: Merchant Dashboard
Step 1. Open Invitations
Go to Linked Accounts → Invitations and select the Sent tab.
Step 2. Send the invitation
- Click Invite.
- Type the invitee's email address and press Enter to add it. You can add more than one address to invite several accounts at once.
- Choose the account Type:
- Merchant: a business that will complete full business verification.
- Non-business Individual: an individual who completes identity verification only.
- Click Send invitation.
Your invitation appears in the Sent list with the status Pending and an invitation ID that starts with lr_.
Step 3. Copy and share the signup link
- On the new invitation row, click Copy signup link.
- Send that link to your invitee. It looks like this:
https://dashboard.paymongo.com/[email protected]&invitation_code=lr_xxxxxxxxxxxxxxxxxxxxxxxx
Share the copied link exactly as it isThe link already contains your invitee's email and invitation code. Don't retype or edit it. Just copy and share it directly so the values aren't changed.
Step 4. Your invitee signs up and onboards
When the invitee opens the link while signed out, they land on PayMongo's Create your account page with their email and invitation code already filled in. They then:
- Set a password and accept the Terms, leaving the pre-filled email unchanged.
- Verify their email with the one-time code.
- Complete standard PayMongo onboarding. This is identity verification, followed by business information (for merchants) or personal information (for individuals).
Step 5. Confirm the link
Back in Linked Accounts → Invitations → Sent, the invitation status changes from Pending to Accepted and shows the linked child account. The two accounts are now linked.
Method 2: API
Use the API to create and track invitations programmatically. This is ideal for platforms that onboard many child accounts.
What the API does, and what it doesn't doThe API creates and tracks the invitation. It does not onboard your invitee for you. A new user still opens the signup link in a browser and completes signup and identity verification themselves. In other words, the API handles the invitation, and your invitee completes the rest. That rest is the same standard onboarding as any PayMongo account.
Authentication. Authenticate with your secret API key using HTTP Basic auth: your secret key is the username, and the password is left empty. Public keys cannot create or manage links.
Base URL: https://api.paymongo.com
Step 1. Create the invitation
Send a POST to /v2/linking-requests/invites with one or more invitees. Set account_type to merchant for a business or consumer for a non-business individual.
curl -X POST https://api.paymongo.com/v2/linking-requests/invites \
-u sk_live_your_secret_key: \
-H "Content-Type: application/json" \
-d '{
"invites": [
{ "email": "[email protected]", "account_type": "merchant" }
]
}'The response returns an invitation ID (starting with lr_) for each invitee, each with a status of pending:
{
"success_count": 1,
"failed_count": 0,
"invites": [
{
"email": "[email protected]",
"account_type": "merchant",
"invitation_id": "lr_xxxxxxxxxxxxxxxxxxxxxxxx",
"status": "pending"
}
]
}You can include several invitees in one request. Each one is reported independently, so some can succeed while others fail.
Step 2. Build the signup link
Construct the signup link from the invitee's email and the invitation_id you got back:
https://dashboard.paymongo.com/signup?email={EMAIL}&invitation_code={invitation_id}
Encode the emailEncode the email before you put it in the link. In particular, a
+must become%2B. For example,[email protected]becomesjane%[email protected]. Otherwise the invitee's prefilled email won't match the invitation, and signup will fail.
Step 3. Share the link and let your invitee onboard
Send the link to your invitee. They open it in a browser, create their PayMongo account with the prefilled email, and complete standard onboarding. This is identity verification, followed by business or personal information.
Step 4. Track the invitation
Poll the invitation to see when it's accepted. To fetch one by ID:
curl https://api.paymongo.com/v2/linking-requests/lr_xxxxxxxxxxxxxxxxxxxxxxxx \
-u sk_live_your_secret_key:{
"invitation_id": "lr_xxxxxxxxxxxxxxxxxxxxxxxx",
"email": "[email protected]",
"account_type": "merchant",
"status": "accepted",
"child_account_id": "acct_xxxxxxxxxxxxxxxxxxxxxxxx"
}When status becomes accepted, child_account_id is filled in and the accounts are linked. You can also list invitations and filter by status. See the Reference section below.
After the invitation is accepted
Once your invitee finishes onboarding and their account is activated:
- The invitation status becomes Accepted, and the invitation now carries the new child account ID.
- The link between your account and the child account is live, and you can transact on the child's behalf according to your Linked Accounts setup.
- The child can also sign in and operate their own account independently.
Managing invitations
You can manage invitations from either the Dashboard or the API.
| Action | Merchant Dashboard | API |
|---|---|---|
| See invitation status | Open the row in Invitations → Sent | GET /v2/linking-requests or GET /v2/linking-requests/{id} |
| Cancel a pending invitation | Open the row and click Cancel | POST /v2/linking-requests/{id}/cancel |
| Re-share the signup link | Click Copy signup link again | Rebuild the link from the email and invitation_id |
A couple of things to keep in mind:
- Invitations don't expire. A pending invitation stays valid until it's accepted, declined, or cancelled.
- One active invitation per email. You can't send a second pending invitation to an email that already has one. Cancel the first if you need to resend.
Reference
Account types
| Type | API value | Onboarding the invitee completes |
|---|---|---|
| Merchant | merchant | Identity verification and business information |
| Non-business Individual | consumer | Identity verification only |
Invitation statuses
| Status | Meaning |
|---|---|
pending | Invitation sent. The invitee hasn't signed up yet. |
accepted | The invitee signed up, and the accounts are linked. |
declined | The invitee declined the invitation. |
cancelled | The parent cancelled the invitation. |
Endpoints
| Purpose | Method and path |
|---|---|
| Create invitations | POST /v2/linking-requests/invites |
| List invitations | GET /v2/linking-requests |
| Get one invitation | GET /v2/linking-requests/{id} |
| Cancel an invitation | POST /v2/linking-requests/{id}/cancel |