Universal Giving
Protocol
The common language for nonprofits, giving platforms, and grantmakers.
UGP standardizes how nonprofits are discovered and how giving platforms remit the donations they’ve collected — over real bank rails, through one protocol, without custom integrations.
Two things, one namespace
UGP reuses UCP’s discovery, profile, capability, service, and HTTP-signing primitives unchanged, and adds a small set of giving-specific schemas under dev.ugp.giving.
Nonprofit profiles
A machine-readable description of a nonprofit — display and legal name, EINs, tax-deductible status, mission, branding, and contact metadata — carried inside the organization’s UCP discovery profile.
Profile specDonation remittance
A batch workflow for a platform to declare the donations it has already collected, receive payment instructions, push funds over a supported rail, and reconcile the settled deposit.
Donations specDiscover, batch, remit, reconcile
UGP does not tokenize or charge a donor’s card. The platform already holds the funds — UGP standardizes only the remittance of those funds to the nonprofit.
Discover
Resolve a nonprofit by name, EIN, or website to its /.well-known/ucp — via the live registry or any compatible directory.
Batch
Declare the donations already collected and post them as a remittance batch.
Remit
Push funds over a supported rail — ACH, RTP, FedNow, wire, or paper check.
Reconcile
Match the settled deposit back to the batch and close the loop.
Nothing new to invent
UGP mirrors how UCP separates who advertises a capability from who serves it. Nonprofits own their identity; providers run the endpoints.
Open discovery
Every nonprofit hosts /.well-known/ucp on its own domain — independently discoverable, no gatekeeper.
Profiles & capabilities
Reuses UCP’s profile and capability primitives — UGP just declares the giving capabilities a nonprofit supports.
Hosting split
The nonprofit owns identity and signing keys; a provider serves /profile, batches, and reconciliation.
Signed requests
Authenticated calls use UCP’s HTTP message-signing — the same wire-level trust model, unchanged.
Read it, then build it
1. Learn the model
Start with Core Concepts for roles, the hosting split, and money flow.
2. Read the spec
Work through the Specification and the versioned schemas.
3. Build
Clone the repo and run the reference implementation and demos.
Specification & schemas
The normative spec and the raw JSON Schema / OpenAPI artifacts are served at versioned URLs under /2026-06-25/. Every $id and $ref is absolute and version-pinned, so any JSON Schema or OpenAPI tool can resolve the full reference graph directly.