Partners

Just integrating your own firm? You don't need to be a partner. A firm admin creates a key in the portal (Preferences → Self-managed API) and integrates directly — start with the Quickstart. This page is only for partners who manage other firms.

Most integrators send their own firm's clients to Magnetic — a firm admin creates a key in the portal and integrates against it (the self-managed API). A partner is different: a partner manages multiple firms on their behalf.

A partner is, in short, a multi-firm user with org-creation capability. On top of everything a firm can do, a partner can:

  • Create and manage firm organizations — onboard a new firm, or link an existing one.
  • Issue and revoke API keys for the firms it manages — once a firm admin has accepted the partner's management.
  • Get a sandbox to build against safely.

Becoming a partner

Partner status is granted by Magnetic. Request it from the portal: in Preferences → Self-managed API, use "Become a partner" to send us a request. Our team reviews it and provisions your partner organization — your existing firm is left untouched and is added as your first managed firm, and you're invited as an admin of the new partner org. (No Magnetic account yet? Contact your Magnetic representative to get started.)

The partner console

Everything partner-specific is available in the partner console at app.magnetictax.com/partner, and most of it is also available programmatically through the Partner API:

  • Creating firms and inviting their admins — console or Partner API.
  • Listing your firms, and issuing / renaming / re-pointing / revoking their API keys — console or Partner API.
  • Your onboarding webhook — console or Partner API.
  • Your onboarding return URL, if you start onboarding on your own platform — Partner API.

Onboarding a firm

  1. Create the firm. In the partner console, create a firm organization and enter the firm admin's email. We create the firm's org and email that admin an invitation. (Through the Partner API you can instead take the onboarding_url we return and redirect the admin yourself — the right shape when onboarding starts on your own platform.)
  2. The firm answers. The firm admin signs in and is shown a screen naming you and what you'd be able to do, with two answers: approve or not now. Until they approve, the firm is pending — you can't issue its API key yet. You'll see the firm's page in the console flip from pending to accepted, and — if you set a partner webhook — receive a firm.management_accepted event so you can automate the next step (see Onboarding webhook). This keeps the firm in control of who can access its data. (Your one provisioned sandbox org is the exception — it's accepted for you so you can build immediately.)

    They can also say no, or change their mind later. Declining leaves the firm pending with a declined_at timestamp — it means "not now", so you may ask again — and a firm that has already approved can end your management from its own settings at any time, which sets the firm to revoked and stops its keys working. You're told about all three outcomes on the same webhook.

  3. Issue the firm's API key. Once accepted, create an API key for that firm from its page in the partner console; the key is shown once — save it. Set the key's webhook URL here too (and edit it later from the same key row): a key gets a signing secret only once it has a webhook URL, and that secret is shown once — and rotated (a new value shown once) whenever you set or change the URL — so save it each time. Partner-issued keys carry the full integrations scope set.
  4. Integrate. Use that key against the /v1 endpoints exactly like a self-managed firm. It acts only for that one firm.

Inviting the firm admin (step 1) is separate from inviting your own partner teammates — colleagues who help you run the partner console. You manage those teammates (and their roles) from the partner console's users area.

One key per firm

Every key that touches client data is scoped to exactly one managed firm. Managing N firms means N keys, each with its own webhook URL and (once that URL is set) its own signing secret, and a key only ever sees its one firm's data. There is no data key that spans firms.

Keys

Two kinds, doing two different jobs:

  • A firm key (mag_…) acts for exactly one firm and carries its data — clients, documents, submissions. It's either a firm's own key (direct) or a partner-issued key (for a firm you manage); either way the firm is fixed by the key.
  • A partner key (magp_…) acts for your partner account: list the firms you manage, issue and revoke their keys, configure your onboarding webhook. It cannot read or write any client data — see the Partner API.

For client data it's the same api.magnetictax.com endpoints for everyone; the firm key determines the context. GET /v1/organization returns that key's organization_id (the firm it acts for) and owner (your partner name on a partner-issued key), so you can confirm a key is set up correctly before submitting.

Partner-account management lives under /v1/partner — the same API, documented separately because it has a different reader and a different credential. See the Partner API.

Onboarding webhook

So you don't have to poll the console for acceptances, set a partner webhook URL in the partner console. We POST a signed event whenever a managed firm answers — firm.management_accepted is your cue to issue that firm's key:

{
  "event": "firm.management_accepted",
  "delivered_at": "2026-07-18T20:00:00.000000+00:00",
  "firm": { "organization_id": "org_…", "name": "Acme Tax LLC" }
}

Two more arrive on the same webhook, in the same shape, and both mean stop waiting:

Event What happened What to do
firm.management_accepted The firm approved you Issue its API key
firm.management_declined The firm said "not now" — it stays pending, and you may ask again Stop polling; follow up out of band
firm.management_revoked A firm that had approved you ended the arrangement Stop submitting; its keys no longer work

Handle all three. An integration that only listens for accepted waits forever on a firm that declined, and keeps trying to file for one that revoked.

It's signed exactly like submission webhooks — HMAC-SHA256 over the raw body in X-Magnetic-Signature, verified with your partner signing secret (shown in the partner console next to the webhook URL; distinct from any per-key secret). This is a single partner-level webhook covering all your firms — a separate channel from the per-key submission.updated webhooks.

Billing

Partner pricing is set by your partner agreement — terms are tailored to each partner. Talk to your Magnetic contact for specifics; billing is handled through your agreement, not configured or exposed through the API.

Sandbox

Every partner gets a dedicated sandbox organization; create a sandbox key for it in the partner console (and set that key's webhook URL the same way you would a firm key). The sandbox key exercises the full submission loop — create clients, upload documents, create submissions, and force them to completed/cancelled — but strictly within the sandbox (no real preparer, no firm emails). See Sandbox testing.

The sandbox covers the submission loop. The partner-specific onboarding steps (creating a firm, the acceptance handshake, issuing a firm key) are done against real firms in the console, not in the sandbox — a firm only ever grants access by explicitly accepting.

results matching ""

    No results matching ""