Maps private platform concepts to public CertifiedData Agent Commerce contract concepts.
- Public naming should remain stable and explicit.
- Public schemas should align to private domain semantics where possible.
- Private execution detail should not be surfaced directly.
- Public enums should not exceed currently supported private capabilities.
- Where the private platform has richer detail, the public contract exposes a safe abstraction.
| Private concept | Public concept | Notes |
|---|---|---|
| payment rail enum | PaymentRail |
Public values must align with supported private rails |
| payment transaction | Transaction |
Clean contract abstraction, not raw internal ledger shape |
| payment receipt payload | Receipt sub-object on transaction |
Align semantically, never leak private signing material |
| payment authorization | PaymentIntent lifecycle semantics |
Expose only public lifecycle |
| merchant profile | Payee resource |
Renamed; stripeAccountRef stays private |
| agent account | NOT exposed in V1 | Internal concept |
| policy evaluation result | public-safe outcome fields only | Do not expose rule reasoning internals |
stripe,usdc_base,usdc_ethereum,eth_ethereum
Do not invent additional rails unless explicitly approved.
Transaction: created, submitted, captured, succeeded, failed, canceled
PaymentIntent: created, confirmed, processing, succeeded, failed, canceled
Settlement: draft, submitted, processing, succeeded, failed, canceled
Refund: created, processing, succeeded, failed
PayoutDestination: pending_verification, active, rejected, inactive
Do not add statuses not supported by the public lifecycle model.
Public receipt shape supports:
- receipt identifier (
rcpt_prefix) - receipt version (
payment_receipt.v1) - transaction identifier
- rail, amount, currency
- created timestamp
- SHA-256 hash of canonical receipt payload
- signature presence indicator (not the key)
Does not expose:
- private signing keys or key PEM
- internal signing pipeline identifiers
Public fields: artifact_id, certificate_id, decision_record_id, dataset_id, model_id, output_id, receipt_hash, external_reference, provenance_metadata
These map to real private platform trust/decision identifiers. The public contract remains a stable interface.
stripeAccountRef- raw crypto wallet addresses as payout destinations
privateKey/ signing key PEMSTRIPE_WEBHOOK_SECRETrequireHumanReviewOverCentsexact threshold values- Policy rule internals (allowedMerchants list, dailyLimitCents)
externalPaymentIntentId(raw Stripe PI ID) — use abstractedprocessor_reference
Public events correspond to meaningful lifecycle transitions in the private platform.
Examples: payee.created, payment_intent.confirmed, transaction.captured, settlement.succeeded, refund.failed
The public event envelope remains stable even if private event delivery or internal services evolve.
Public environments: sandbox, live
API keys, webhook delivery, and mock server behavior must align to this model. IDs and secrets are environment-scoped and non-portable.
When a private concept is richer than the public contract:
- preserve public stability
- expose the minimal useful abstraction
- do not leak internals
- note the alignment in comments/docs if needed