Demo store

Use the demo merchant store to try out payments with Arc Pay wallet using Universal Commerce Protocol (UCP).

→ See demo store UCP profile

 

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.