Demo store
Use the demo merchant store to try out payments with Arc Pay wallet using Universal Commerce Protocol (UCP).
For merchants: Arc Pay UCP payment handler
To accept Arc Pay payments with UCP, the merchant must include Arc Pay as the payment handler in all UCP Checkout Session responses.
Arc Pay payment handler has the following specification:
Handler specification
https://arcpay.ai/ucp/guides/arcpay-payment-handler (this page)
Handler name
ai.arcpay.wallet
Version
2026-01-15
Configuration schema
https://arcpay.ai/ucp/schemas/arcpay_config.json
Payment instrument schema
https://arcpay.ai/ucp/schemas/arcpay_wallet_payment_instrument.json
Note: We're extending UCP's Payment Instrument with custom type wallet that is not officially supported by UCP as of date of Arc Pay UCP handler release.
Payment token credential schema
https://arcpay.ai/ucp/schemas/arcpay_mandate_token_credential.json
Handling payments with UCP
The merchant includes Arc Pay as the payment handler in UCP Checkout Session responses.
An example of the valid UCP payment handler configuration is as follows:
{
"id": "arcpay",
"name": "ai.arcpay.wallet",
"version": "2026-01-15",
"spec": "https://arcpay.ai/ucp/guides/arcpay-payment-handler",
"config_schema": "https://arcpay.ai/ucp/schemas/arcpay_config.json",
"instrument_schemas": [
"https://arcpay.ai/ucp/schemas/arcpay_wallet_payment_instrument.json"
],
"config": {
"environment": "sandbox",
"merchant_id": "{{ your_merchant_id }}"
}
}The platform (agent) then completes the checkout on /checkout-sessions/<id>/complete by sending the payment mandate secret to the merchant.
{
"id": "checkout_session_123",
"payment_data": {
"id": "client_pi_identifier_001",
"handler_id": "arcpay",
"type": "wallet",
"credential": {
"type": "arcpay_mandate",
"token": "paym_eNSM2UiaOaUdlfKU6_secret_2k8ZabXp...",
"expires_at": "2026-01-16T22:10:00Z"
}
}
}Upon checkout completion, the merchant uses the secret token to pull the payment from the customer's wallet, up to the authorized limit of the mandate:
POST /payment_captures
{
"amount": "20",
"currency": "USDC",
"granted_mandate_secret": "paym_eNSM2UiaOaUdlfKU6_secret_2k8ZabXp..."
}For more details on Arc Pay API, see the API documentation.