Skip to main content

FPSF-CPP-001 — Reference

Layer: Reference · Audience: developers (daily reference) For normative requirements, see the Formal Specification.


Mandatory API Endpoints

EndpointDescription
POST /v1/cashpack/issueSubmit a Lock Request. Returns a signed cash-pack on success.
POST /v1/cashpack/renewSubmit a cash-pack plus a Renewal Entry. Returns updated signed cash-pack.
POST /v1/cashpack/redeemSubmit a Redemption Request plus the cash-pack. Returns Redemption Confirmation.
GET /v1/cashpack/{pack_id}/statusQuery instrument status. Restricted to issuing Principal and Operator.

Instrument Status Values

StatusTerminalMeaning
ACTIVENoInstrument is valid and can be renewed or redeemed.
REDEEMEDYesRedeemed. Funds released.
EXPIREDYesReached expiry without redemption. Funds returned to Principal.
CANCELLEDYesCancelled by Operator (typically via legal order). Funds held pending instruction.

Error Codes

Error CodeMeaning
INSUFFICIENT_BALANCEPrincipal's available balance is less than the requested amount.
AMOUNT_EXCEEDS_LIMITAmount exceeds the Operator's configured maximum.
INVALID_SIGNATUREOne or more signatures failed verification.
BEARER_MISMATCHSubmitting public key does not match current_bearer_pk.
CHAIN_DIGEST_MISMATCHprev_chain_digest does not match the instrument's current chain_digest.
INSTRUMENT_NOT_ACTIVEInstrument status is REDEEMED, EXPIRED, or CANCELLED.
CHAIN_DEPTH_EXCEEDEDrenewal_chain has reached the Operator's configured maximum depth.
REDEEMER_NOT_IDENTIFIEDRedeemer could not be verified to the required identity level.
DUPLICATE_IDrequest_id or renewal_id has been seen before (replay prevention).
EXPIRY_INVALIDRequested expiry is outside the Operator's permitted range.

Well-Known Resources

URLPurpose
/.well-known/cashpack-policy.jsonOperator Policy Document
/.well-known/cashpack-pubkey.jsonOperator's current public signing key (JWK format, RFC 7517)

Glossary

TermDefinition
BearerThe entity currently authorized to renew or redeem a cash-pack, identified by control of the private key corresponding to current_bearer_pk.
Cash-PackThe signed digital bearer instrument defined in this specification.
Chain DigestA rolling SHA-256 hash binding each entry in the renewal chain to all previous entries.
Disposable Key PairAn asymmetric key pair generated for a single instrument and discarded after use.
Initial BearerThe first recipient of a cash-pack, whose public key is specified in the Lock Request.
Intermediate BearerAny bearer who renews the instrument rather than redeeming it. Not identified to the Operator.
Lock RequestThe signed message submitted by the Principal to initiate issuance.
OperatorThe regulated entity that issues, countersigns, and redeems cash-packs.
PrincipalThe identified account holder who requests issuance and whose funds are locked.
RenewalThe act of updating current_bearer_pk to a new public key, transferring bearer rights.
RedemptionThe final conversion of a cash-pack into spendable funds by the current bearer.

FPSF-CPP-001 v1.0.0 · Draft · Fabric Payment Standards Foundation · Apache-2.0