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.

Universal Giving Protocol

Learn

The role model, the hosting split, and how money moves over bank rails.

Core Concepts

Specify

The normative specification plus versioned JSON Schema and OpenAPI artifacts.

Specification

Build

The reference implementation, demos, and protocol client on GitHub.

View on GitHub
What UGP standardizes

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.

dev.ugp.giving.profile

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 spec
dev.ugp.giving.donations

Donation 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 spec
How money moves

Discover, 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.

1

Discover

Resolve a nonprofit by name, EIN, or website to its /.well-known/ucp — via the live registry or any compatible directory.

2

Batch

Declare the donations already collected and post them as a remittance batch.

3

Remit

Push funds over a supported rail — ACH, RTP, FedNow, wire, or paper check.

4

Reconcile

Match the settled deposit back to the batch and close the loop.

Built on UCP

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.

Get started

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.

For implementers

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.