Architectural Question: How do platforms support custom payment handlers for native checkout? #631
Replies: 1 comment 1 reply
|
Your conclusion is essentially right: a UCP payment handler is not a remotely executable UI/plugin that every platform can consume generically. It is a named protocol contract. A platform supports a handler only after implementing that handler's acquisition/processing contract and advertising it in its own profile. The intended flow is:
The handler JSON Schema describes the data shapes; it does not, by itself, define a safe universal form renderer or transfer executable handler code to the platform. Therefore an unknown custom handler should not suddenly make arbitrary sensitive fields collectable. There must already be a mutually supported implementation. For sensitive input, the main platform application/agent is not supposed to see raw credentials. The current examples put collection in a compliant secure payment credential provider/vault. Which party tokenizes is handler-specific:
So a processor-owned tokenization endpoint is a valid and documented pattern, but it is not an automatic property of every custom handler. The handler specification must define its participants, prerequisites/onboarding, acquisition protocol, endpoints/authentication, credential transformation, binding, and compliance responsibilities. Platforms that have not implemented/onboarded that handler cannot honestly advertise support for it. In short: UCP gives you N-to-N capability discovery and standard envelopes, not zero-code universal execution. A seamless autonomous flow exists only for the intersection of handlers both sides have implemented; otherwise escalation is the correct boundary, not a failure of the protocol. Relevant current spec sections: |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi everyone,
I'm reviewing the UCP specification around the checkout lifecycle and am looking for clarification on how agentic platforms are expected to support custom payment handlers defined by payment processors.
Specifically, I'm trying to understand the execution boundaries when different payment methods require different custom instrument schemas containing sensitive user input (e.g. raw card details, bank account details or other local payment method-specific credentials).
Context
In a typical non-agentic checkout flow, the user first selects their preferred payment method (e.g.
Card,SEPA Direct Debitor another local payment method). That selection determines which instrument schema must be collected. For example:Card→ raw card detailsSEPA Direct Debit→ bank account detailsIf such a payment processor wants to support agentic payments via UCP, the protocol expects it to define a custom payment handler that exposes all supported payment methods and their corresponding instrument schemas.
The question
When an agentic platform encounters such a custom payment handler, how is it expected to orchestrate the checkout lifecycle while maintaining an autonomous flow and still allowing the payment processor to receive all the information required to process the payment? More specifically:
Payment method discovery & instrument collection: How is the platform expected to discover the available payment methods, allow the user to select one, determine the corresponding instrument schema and securely collect the required inputs? Who is responsible for rendering the secure input fields defined by those schemas?
Tokenization & compliance: Once the required instrument has been collected, who is responsible for tokenizing it? Is the payment handler always expected to specify a tokenization endpoint owned by the payment processor, allowing the platform to submit the collected user input to that endpoint and then include the returned token in the checkout completion request?
Dilemma
I understand there's an alternative approach where the platform avoids calling the checkout completion endpoint by using
requires_escalationtogether withcontinue_url. However, this largely defeats the purpose of an autonomous, seamless checkout flow, as responsibility for collecting the payment instrument shifts back to the merchant (either directly or by redirecting the user to a processor-hosted page).On the other hand, requiring the platform to collect sensitive payment credentials seems to conflict with the intended trust model, as it introduces significant security, compliance, and liability considerations.
At the moment, I don't see how an agentic platform can support arbitrary custom payment handlers without implementing handler-specific logic. But, this also doesn't seem practical given that there can be many platforms and a large number of custom payment handlers.
Am I missing an intended protocol mechanism that addresses this, or is handler-specific integration the expected model?
I'd really appreciate any clarification on the intended architecture and responsibilities here.
Thanks!
All reactions