Skip to main content

Member Links

A member link sends one of your members to one deal page on Wefunder and tells you what that person did. Your member clicks a deal card on your site, lands on the offering's Wefunder page, and invests there. Wefunder handles the account, KYC and payment.

A member link carries no email. You may not know which address your member will use: they might sign in with Apple behind a relay address, or with an existing Wefunder account under a different email. The link binds to whichever Wefunder account invests through it first. Once you know a member's Wefunder account (from an earlier link's wefunder_user_id), you can bind their next links to it up front. Pre-binding is in preview and enabled per app: ask Wefunder to turn it on for yours.

Which one do I use?​

You want to…UseKeyed onLands on
Send a member you know to a deal page and learn what they didMember linkyour member referencethe deal page
Put a known investor straight into checkout, embedded or hostedInvestment session (beta)their emailcheckout
Manage the offering's own invitations, as the founder or manager would on WefunderInvite link (preview)a recipient email, or none for a shareable linkthe invest page

Member links are your app's. Invite links are the offering's: every app installed on the offering, and the founder on Wefunder, sees them.

What the member gets​

What an invitation from the offering's manager or founder gets them:

  • Private rounds. A member link opens a private round's deal page.
  • Invited pricing. The investment is priced as an invited one, under the same rules as an invite link.

The link binds to the first account that invests through it, or to the account you pre-bind. After that it answers only to that account. Anyone else who opens it, logged out or signed in to a different account, gets nothing from it: no private-round access and no invited pricing. Wefunder tells them the invitation is for a different account and offers to sign them in with the right one, with a masked hint of the invited address (like [email protected] or [email protected]) so the member can tell which of their accounts to use. It never shows the address itself. If the round is public they can still invest, at standard terms.

Who can create them​

A syndicate- or company-owned token of an app installed on the offering's syndicate or company. A syndicate's offerings are the SPVs it leads, and a company's are all of its rounds. User tokens get 404: a member link belongs to an install, and a user token has none.

ScopeAllows
read:invite_linksList and read the member links your install minted
write:invite_linksCreate and cancel them (includes read:invite_links)

These are the investment-link scopes, shared with invite links. The token and the install must both carry the scope.

Get set up​

  1. In the developer portal, tick read:invite_links and write:invite_links on your app.
  2. Have the syndicate's manager or the company's founder install your app on it. The install carries the scopes ticked when it was created, so install after ticking them.
  3. Mint an installation token for that install and use it as the bearer token below.

Walk through a working integration in the member links guide.

In the sandbox, member links work on your realm syndicate's open deal; see the sandbox walkthrough.

Create​

curl -X POST https://wefunder.com/api/v2/offerings/ofr_abc123/member_links \
-H "Authorization: Bearer $SYNDICATE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"member_link": {"reference": "member_8812"}}'
{
"data": {
"id": "il_8kQm2xVb7nRt4WcY9pLe3HdA",
"type": "member_link",
"attributes": {
"url": "https://wefunder.com/arc-hockey?invite_token=kL273wxd4DGb896V87ddtLE9",
"state": "created",
"reference": "member_8812",
"wefunder_user_id": null,
"investment_id": null,
"offering": "ofr_abc123",
"created_at": "2026-10-12T21:30:00Z"
}
},
"meta": { "request_id": "…" }
}
Field
wefunder_user_idOptional. The usr_ id of a member whose Wefunder account you already know, typically from an earlier link's wefunder_user_id. The link is bound to that account from the start, so a forwarded copy is useless to anyone else.
referenceOptional. Your member id, up to 255 characters. Repeating it on the same offering returns the live link with 200 instead of minting another. Use the same reference on every offering: each offering gets its own link.

Errors: 404 for an offering your install can't reach or an unknown wefunder_user_id. 422 offering_not_open if the offering isn't open for investment, and 422 offering_has_no_page if it has no Wefunder page to link to. 409 reference_conflict if a repeated reference names a different wefunder_user_id than the account its link is bound to. Repeating a reference with a wefunder_user_id binds a live link nobody has redeemed yet.

Idempotency-Key is supported too. A reference is usually the simpler key.

Read​

  • GET /offerings/{id}/member_links: your install's member links on an offering, newest first, paginated.
  • GET /member_links/{id}: one link.

state is derived live:

stateMeaning
createdNobody has redeemed it yet.
boundA Wefunder account holds it, by investing through it or because you pre-bound it. wefunder_user_id is set.
investedThat account invested in this offering after you minted the link. investment_id is set. An investment made before the link existed is not counted.
canceledCanceled before any investment.

Responses carry Wefunder ids only, never the member's email, even if your app has PII scope.

Cancel​

POST /member_links/{id}/cancel retracts the invitation. It's idempotent. The link grants nothing new after that: a checkout started after the cancel, including the same member's next investment, is priced at standard terms. Investments already made through the link keep the terms they were made at, and state stays invested. A link nobody invested through is also released from the account you pre-bound it to, so wefunder_user_id goes back to null.

Revoking your install cancels every member link it minted that no investment went through, releasing any account you pre-bound. Links an investment went through stand.

Visibility​

  • Only the install that minted a member link can list or read it. Another app installed on the same offering sees none of them.
  • Member links never appear in /invite_links, including for your own app.
  • The founder's invite list on Wefunder does not itemize them. An investor who came through one shows up in the founder's investor list like any other investor.

Not yet supported​

  • Webhooks when a link is bound or invested. Poll GET /member_links/{id} for now.
  • An email hint to prefill sign-in, link expiry, and a per-member investment cap.
  • Member links that land on a syndicate page or join a syndicate. Links are per deal.
Was this page helpful?