Onboarding

From "I want to integrate" to your first live submission.

1. Get provisioned (keys)

Two paths, one per environment:

Either way you receive, per environment:

ItemWhat it is
Tenant API idYour public id, sent as X-GFN-Tenant.
HMAC secretSigns your requests to GoFundNode.
Webhook secretVerifies webhooks from GoFundNode (separate secret).
Allowed job typesThe allowlist you may submit. Launch: ["ats.application"].

Store both secrets in your own secret manager and expose them as env vars:

GFN_API_BASE_URL=https://api.staging.gofundnode.com   # sandbox; production is https://api.gofundnode.com
GFN_TENANT_API_ID=<your tenant api id>
GFN_HMAC_SECRET=<inbound signing secret>
GFN_WEBHOOK_SECRET=<inbound webhook verification secret>
The two secrets are not interchangeable. Swapping them makes every request (or every webhook verification) 401. See Auth.

2. Configure your webhook URL

3. Sandbox vs production

Two live environments. The sandbox runs at https://api.staging.gofundnode.com with its own database and its own TLS, and speaks a byte-identical wire — same endpoints, same signing, same webhooks, same error taxonomy. Build against the sandbox first; nothing you write there changes for production.

Sandbox (staging)Production
Base URLhttps://api.staging.gofundnode.comhttps://api.gofundnode.com
KeysOpen signup via the console (pointed at staging), or ops-provisionedOps-provisioned, prod vault item
DataIts own database — nothing shared with productionLive tenants, live submissions
CreditsAutomatic signup grant; further top-ups ops-coordinatedFiat top-ups, ops-coordinated
WireByte-identical. Only the base URL + secrets change between environments.

To promote, swap the base URL and both secrets — nothing else changes. Verify either environment with GET /ready (no auth) → { "status": "ready" }.

4. Top up credits (fiat)

Fiat is the customer payment rail (ADR-046). Credits are a consumptive, single-issuer, non-transferable prepayment — no token, wallet, or stored value. During the pilot beta, top-ups in both environments are coordinated with ops (ops@gofundnode.com): you pay in fiat and ops grants the credits to your tenant. Sandbox tenants start with an automatic signup grant, so you can submit on staging before any top-up. There is no customer-callable purchase endpoint; self-serve checkout arrives with general availability, and until then top-ups remain ops-coordinated. Watch GET /v1/credits/balance and the credits.low_balance webhook (default threshold 1000). The inbound Solana Pay USDC flow is a preserved continuity exception (ADR-047), off unless enabled — not the GA rail. See Credits.

5. Go-live checklist

  1. A sandbox submission succeeds end-to-end (201 → webhook → settled) against https://api.staging.gofundnode.com; first production submissions are coordinated with ops.
  2. Webhook handler verifies signatures, dedupes on X-GFN-Delivery, replies 2xx.
  3. Idempotency keys are derived from your durable records (not random). See Idempotency.
  4. Clock is NTP-synced (avoids ±5-min replay 401s).
  5. Prod secrets + base URL configured; GET /ready is green.
  6. A funded fiat credit balance.

Platform-side launch gates live in docs/launch/GA-CHECKLIST.md in the repository.

6. Support

Include the x-request-id response header (surfaced as err.requestId on SDK errors) when reporting an issue.

← Build on L1 Portal home →