<!-- Source: https://docs.infraio.xyz/en/get-started/migrate-from-coinbase-commerce -->
<!-- Last updated: 2026-10-04 -->

# Migrate from Coinbase Commerce

Coinbase Commerce ended its self-managed checkout outside the US and Singapore
on **31 March 2026**. If you were affected, InfraIO Pay is a non-custodial
alternative: funds go straight to your own wallet.

> **Note:**
>
> **Coming soon.** Dedicated import tooling is planned. The steps below use the current API.

## Concept mapping

| Coinbase Commerce | InfraIO Pay |
| --- | --- |
| Charge | [Checkout session](https://docs.infraio.xyz/en/concepts/sessions) (API) or [payment link](https://docs.infraio.xyz/en/payment-links/overview) (no code) |
| Checkout | [Hosted checkout](https://docs.infraio.xyz/en/checkout/overview) |
| Webhook subscription | [Webhook endpoint](https://docs.infraio.xyz/en/webhooks/overview) with HMAC signature |
| Charge `confirmed` event | `payment.settled` |
| Charge `expired` event | `checkout.expired` |
| API key | [API key pair](https://docs.infraio.xyz/en/security/api-keys) (`pk_` + `sk_`) |

## Migration in three steps

### Create your account and keys

Register at [app.infraio.xyz](https://app.infraio.xyz), add a treasury wallet,
and generate test keys and a webhook secret.

### Swap charge creation for sessions

Replace the call that creates a charge with a checkout session, or use payment
links for simple cases. Store your own order ID in `external_ref`. See the [Quickstart](https://docs.infraio.xyz/en/get-started/quickstart).

### Switch your webhook handler

Verify the [signature](https://docs.infraio.xyz/en/webhooks/signature-verification) and fulfil on
`payment.settled`. Test on testnets, then switch to live keys.

Your fees are listed in [Pricing & fees](https://docs.infraio.xyz/en/concepts/pricing).
