Managing Channels
Channels are the unit of separation in MutoPay. One per integration, each with its own API key, webhook, and (optionally) its own settlement wallet. This guide walks through every channel setting in the dashboard.
A channel is a slot for one integration. Your WooCommerce store is one channel, your mobile app is another, your Telegram bot is a third. Each channel has its own API key (ep_...), its own webhook URL and secret, and can optionally override your account-wide settlement wallet.
If you only have one integration, you can stay on the default channel and ignore the rest of this page. Once you have two, channels start paying for themselves.
Creating a channel
- Go to Settings → Channels.
- Click New channel.
- Pick a name. This is for you, customers never see it. Use what helps you tell channels apart in webhook logs:
woocommerce-prod,mobile-ios,tg-bot-test. - Choose Production or Test. Test channels mint keys with the
ep_test_prefix, never touch a chain, and ship the same webhook events with a"test": truefield. Use one test channel per environment. - Click Create. You get the full API key once. Copy it. We store only a hash, you cannot read it again.
Settings on every channel
| Setting | What it controls | Customer-facing |
|---|---|---|
| Name | Internal label in the dashboard | No |
| Display name | Header on the /pay/{id} page | Yes |
| Tagline | Subtitle on the /pay/{id} page | Yes |
| Webhook URL | Where we POST events | No |
| Webhook secret | HMAC key for signature verification | No |
| Settlement override | Per-channel wallet, token, and chain | Indirect |
Display name and tagline are useful when one MutoPay account fronts multiple brands. Leave them blank and the payment page falls back to your merchant-level business name and tagline.
Settlement overrides
By default, every payment settles to the wallet, token, and chain set in Settings → Settlement. A channel can override all three as one atomic bundle. Example: your main account settles to USDC on Base, but your Telegram bot channel settles to USDT on TON.
To set an override:
- Open the channel.
- Click Settlement override.
- Pick a token, a chain, and paste the destination wallet address.
- Save. The override applies to every new payment created with that channel’s API key, including payments created via the dashboard with
channel_idset.
To remove an override, click Use account default. The channel falls back to your merchant-level settings on the next payment.
Rotating an API key
If a key leaks, rotate it from the channel page (Regenerate API key). The new key is shown once. The old key stops working immediately, any in-flight payments already created with the old key continue to settle normally, but new requests with the old key get 401.
If you cannot reach the dashboard, use the master key (msk_...) to rotate via POST /api/merchant/channels/{id}/regenerate-api-key. See Master Keys vs Channel Keys.
Testing a webhook
On the channel page, Test webhook fires a sample payment.completed event with "test": true to your configured URL. It uses the channel’s real webhook secret, so a passing test means your signature verification works.
The response shows the delivery status code and any error. A 2xx counts as delivered. Anything else triggers the same retry schedule as a real webhook: 5 attempts, exponential backoff (1m, 5m, 30m, 2h, 12h).
Revoking a channel
Revoke API key invalidates the key without deleting the channel. Existing payments stay accessible in your dashboard and webhook history; new requests with that key get 401. Use this when you’ve shut down an integration but want to keep its historical data.
There is no hard delete. If you need a channel removed entirely, contact support@mutopay.com.