This repository contains Affirm's proposed BNPL extensions to the Universal Commerce Protocol (UCP), an open standard proposed by Google for transport-agnostic, composable commerce flows.
Affirm's BNPL extensions to UCP — three protocol extensions and one reference payment handler that enable Buy Now, Pay Later commerce flows within UCP. The extensions are designed to be BNPL-provider-agnostic; Affirm is the reference implementor.
| Extension | Namespace | Purpose |
|---|---|---|
| Prequalification | com.affirm.bnpl.prequalification |
Buyer pre-approved purchasing power, refreshable during shopping |
| Installment Pricing | com.affirm.bnpl.lowest_installment_payment |
Attested "as low as" installment pricing for products and/or cart total |
| Checkout Mandates | com.affirm.bnpl.checkout_mandates |
Cryptographic trust envelope: merchant, BNPL provider, and buyer each sign binding mandates over agreed installment terms |
| Payment Handler | com.affirm.bnpl |
Affirm reference handler: converts BNPL mandates into payment credentials |
See bnpl-extensions/README.md for full documentation including
participant data flows, schema details, and an implementation guide.
The BNPL extensions build on a proposed enhancement to the core UCP identity linking capability:
dev.ucp.common.identity_linking (core UCP, proposed enhancement)
└── Provider account linking + offer discovery
├── com.affirm.bnpl.prequalification (Affirm: buying power signal)
├── com.affirm.bnpl.lowest_installment_payment (Affirm: installment pricing)
└── com.affirm.bnpl.checkout_mandates (Affirm: checkout authorization)
└── com.affirm.bnpl (handler) (Affirm: payment credential issuance)
The identity linking enhancement introduces Provider as a fourth UCP participant type (alongside Buyer, Platform, and Business) and offer discovery as the mechanism by which a linked Provider publishes its shopping-phase benefits to the Platform. It is designed to be useful beyond BNPL — any Provider (loyalty program, rewards card, co-branded card issuer) can implement the Provider pattern. Affirm's BNPL extensions are the reference implementation.
Status: This enhancement has been submitted to the UCP Tech Council for review as a proposed core enhancement to
dev.ucp.common.identity_linking. Until adopted, the schema is tracked in the UCP Enhancement Proposal. If adopted by UCP, the canonical schema URL will move tohttps://ucp.dev/schemas/common/identity_linking_enhancement.json.UCP Enhancement Proposal: Universal-Commerce-Protocol/ucp#384
Schemas in this repository are self-published and resolve via GitHub's raw content URLs:
https://raw.githubusercontent.com/Affirm/ucp-extension/main/
bnpl-extensions/schemas/extensions/bnpl_prequalification.json
bnpl-extensions/schemas/extensions/bnpl_lowest_installment_payment.json
bnpl-extensions/schemas/extensions/bnpl_checkout_mandates.json
bnpl-extensions/schemas/types/bnpl_attestation.json
bnpl-extensions/schemas/types/installment_plan.json
bnpl-extensions/schemas/types/lowest_installment.json
bnpl-extensions/handlers/bnpl_handler.json
References to https://ucp.dev/ schemas (e.g., dev.ucp.shopping.checkout) point to the
canonical UCP repository and are not hosted here.
BSD 3-Clause License — see LICENSE.
This repository tracks Affirm's UCP proposals. For discussion of the protocol itself, see the UCP repository and its GitHub Discussions.