For Investors For Sponsors & Funds Entity Verification How It Works Guides Free Quiz Referral Partners
Investor verification, done in one place

Accredit, screen, and onboard every investor in one branded link.

A licensed CPA confirms your investors are accredited. We add identity, sanctions, and entity checks in the same flow, and write the verified result straight into your CRM. Your brand on it, not ours.

Verification and a signed CRM webhook are live today. The full developer REST API and native per-CRM connectors are in early access — we're onboarding a small group of sponsors now.

The problem

Three tools, three logins, and none of it lands in your CRM.

01

Accreditation is a paperwork chase. Tax returns, net-worth letters, redactions — collected by email and tracked in a spreadsheet.

02

Your bank and fund admin want more. Identity and sanctions screening on every investor — usually a second vendor, a second flow.

03

Entities need their own check. LLCs, trusts, and SPVs require business verification and beneficial-owner review — a third system.

04

Then someone re-keys it by hand. When it's finally done, "verified" gets typed into your CRM manually, one investor at a time.

One flow, your brand

Everything an investor needs to clear, in a single link or API call.

CPA-signed accreditation

A licensed CPA's letter — defensible reasonable-steps evidence under Rule 506(c), not a self-cert checkbox.

Identity verification (KYC)

Government-ID scan plus a liveness selfie, in about a minute — no separate onboarding app.

Sanctions & PEP screening (AML)

OFAC and global watchlists, with optional ongoing monitoring — a match flags for CPA review, never an auto-decline.

Business verification (KYB)

For entity investors: official registry confirmation plus beneficial-owner identification.

White-labeled to your deal

Your logo, your domain, your fund name on the flow and the emails. Investors see you, not us.

Auto-sync to your CRM

When an investor clears, their record is stamped Accredited / KYC / AML / KYB — verified, automatically. No re-keying.

How it works

From share to synced in three steps.

Share your link — or call the API

Drop your branded verification link into your investor flow, or start verifications programmatically from your own system.

Your investor completes one flow

Accreditation plus whichever checks you turn on — identity, AML, and KYB for entities — in a single branded experience.

The result lands in your CRM

A licensed CPA signs off, and the verified status flows back into that investor's record automatically. You watch it on your dashboard.

Why it holds up

A real CPA signs every letter — that's the difference.

Rule 506(c) requires you to take reasonable steps to verify each investor is accredited. A licensed CPA's signed letter is exactly the third-party, professional evidence the SEC's safe harbor contemplates — a self-certification checkbox is not. Every letter is reviewed and signed by a licensed CPA, and every certificate is independently verifiable.

Christopher A. Smith, CPA — Indiana licensed, in good standing, and carrying $1M/$3M professional liability (E&O) coverage. Verify any certificate at AccreditedNow.org.
Where it stands

Live today. Building the rest with our first sponsors.

Available now

Your branded verification link

CPA-signed accreditation with identity, sanctions, and entity checks, on a co-branded link with a live dashboard. You can run investors through it today.

Available now

The verification webhook

A signed verification.completed event pushed to your endpoint the moment the CPA signs — wire it to Zapier, your CRM, or your own system. Turn it on in your dashboard. See the docs →

Early access

The full REST API & native connectors

A developer REST API to create and query verifications programmatically, plus native per-CRM connectors, are in early access. We're onboarding a small group of design-partner sponsors who want to shape which we build first.

For developers

Verification webhook

When an investor you cover clears, we POST a signed verification.completed event to your HTTPS endpoint — so your CRM or portal updates the moment the CPA signs, with no polling. Turn it on in your sponsor dashboard: paste an endpoint URL, copy the signing secret, and send yourself a test event.

Event payload

{
  "id": "evt_ANV-4K2P-9QX7-M3TD.completed",
  "event": "verification.completed",
  "version": "2026-08-18",
  "livemode": true,
  "created": "2026-08-17T15:04:22.000Z",
  "data": {
    "certificate_id": "ANV-4K2P-9QX7-M3TD",
    "status": "verified",
    "investor": {
      "name": "Jordan A. Rivera",
      "email": "jordan@example.com",
      "city": "Austin",
      "state": "Texas",
      "type": "individual"
    },
    "basis": "Net Worth",
    "verification_date": "2026-08-17",
    "expiration_date": "2026-11-15",
    "checks": {
      "identity_verified": true,
      "sanctions_screened": true,
      "business_verified": false
    },
    "deal": "Cedar Point Multifamily Fund II",
    "sponsor_slug": "cedarpoint",
    "certificate_url": "https://accreditednow.org/verify-certificate?id=ANV-4K2P-9QX7-M3TD"
  }
}

The payload is certificate-level and privacy-safe — it never contains the investor's documents, financials, or resume token. Events for a given case are sent only to the sponsor that owns it.

Request headers

  • X-AccreditedNow-Event — the event type, e.g. verification.completed.
  • X-AccreditedNow-Delivery — a stable idempotency key, unique per certificate + event. Dedupe on this; the same event may arrive more than once.
  • X-AccreditedNow-Signaturet=<unix-seconds>,v1=<hex-hmac>.

Verify the signature

Compute an HMAC-SHA256 over `${t}.${rawBody}` using your signing secret, and compare it to v1 with a constant-time check. Verify against the raw request body, before JSON parsing, and reject a timestamp older than five minutes.

const crypto = require('crypto');

function verify(rawBody, header, secret) {
  const p = Object.fromEntries(header.split(',').map(kv => kv.split('=')));
  const fresh = Math.abs(Date.now() / 1000 - Number(p.t)) < 300;
  const expected = crypto.createHmac('sha256', secret)
    .update(p.t + '.' + rawBody).digest('hex');
  const a = Buffer.from(expected), b = Buffer.from(p.v1 || '');
  return fresh && a.length === b.length && crypto.timingSafeEqual(a, b);
}

Delivery, retries & idempotency

  • Acknowledge with any 2xx within a few seconds. A non-2xx or a timeout triggers a bounded retry (short backoff); persistent failure is surfaced in your dashboard.
  • Retries reuse the same X-AccreditedNow-Delivery id — dedupe on it so a retry never double-writes.
  • livemode is false for dashboard test events and true for real verifications.
  • Rotating your signing secret in the dashboard takes effect immediately — update your endpoint at the same time.
Design partner invitation

Be one of the first — and help shape it.

Design-partner sponsors get priority onboarding, a direct say in the first CRM integrations we build, and founder-level pricing locked in. If you're raising under 506(c) and tired of stitching this together yourself, tell us a little and we'll set up a short call.

Thanks — we've got it. We'll reply personally, usually within one business day, to set up a short call and get you into the design-partner group.

Prefer email? Reach us at info@accreditednow.org.

Related pages

Developer & API documentation  ·  Embed verification in your platform