Accept USDC on Algorand and aUSDC on VOI as payment in your Ecwid store via AlgoVoi.
Customer places an Ecwid order
↓
Ecwid fires a webhook (new_order event)
↓
AlgoVoi verifies HMAC-SHA256 signature → parses order
↓
AlgoVoi creates a hosted checkout link (USDC or aUSDC)
↓
Customer pays on-chain
↓
AlgoVoi verifies the transaction on-chain
↓
Ecwid order marked as paid with TX ID in order comments
- An active AlgoVoi tenant account
- An Ecwid store on Business plan or higher (required for the Ecwid REST API and webhooks)
- An Ecwid Store ID and Secret Token (from the Ecwid control panel)
POST /internal/tenants/{tenant_id}/network-configs
Authorization: Bearer <admin-key>
Content-Type: application/json
{
"network": "algorand_mainnet",
"payout_address": "<your-algorand-address>",
"preferred_asset_id": "31566704",
"preferred_asset_decimals": 6
}POST /internal/tenants/{tenant_id}/network-configs
Authorization: Bearer <admin-key>
Content-Type: application/json
{
"network": "voi_mainnet",
"payout_address": "<your-voi-address>",
"preferred_asset_id": "302190",
"preferred_asset_decimals": 6
}- In your Ecwid control panel go to Apps → My Apps → Ecwid API
- Note your Store ID
- Copy your Secret Token (used for both API calls and webhook signing)
Alternatively, create a custom app at developers.ecwid.com and complete the OAuth flow to obtain a token with
read_store_profile read_orders update_ordersscopes.
POST /internal/integrations/{tenant_id}/ecwid
Authorization: Bearer <admin-key>
Content-Type: application/json
{
"credentials": {
"store_id": "<ecwid-store-id>",
"secret_token": "<ecwid-secret-token>"
},
"shop_identifier": "<ecwid-store-id>",
"base_currency": "USD",
"preferred_network": "algorand_mainnet"
}The response includes a webhook_secret and a webhook_url.
Register your AlgoVoi endpoint via the Ecwid REST API:
POST https://app.ecwid.com/api/v3/{store_id}/webhooks
Authorization: Bearer <secret_token>
Content-Type: application/json
{
"url": "<webhook_url from Step 3>",
"event": "order.created",
"secret": "<webhook_secret from Step 3>"
}Ecwid signs webhook requests with HMAC-SHA256. The signature is in the X-Ecwid-Webhook-Signature header (base64-encoded).
Once connected, every new Ecwid order triggers AlgoVoi to:
- Create a hosted checkout link valid for 30 minutes
- Display the USDC (or aUSDC) amount with a QR code and wallet link
- On successful on-chain confirmation:
- Ecwid order payment status set to PAID
- TX ID added as a private order comment
| Symptom | Likely cause |
|---|---|
| HTTP 401 on webhook | Signature mismatch — check webhook_secret matches the secret used at registration |
| HTTP 422 "No network config" | Network config missing for preferred_network |
| Order not updating | Token lacks update_orders scope or has expired |
| Webhook not firing | Ecwid Business plan required; check app webhook registration |
| Network | Asset | Notes |
|---|---|---|
algorand_mainnet |
USDC (ASA 31566704) | Requires ASA opt-in on payout wallet |
voi_mainnet |
WAD (ARC200 app ID 47138068) | |
algorand_testnet |
Test USDC | For integration testing only |
voi_testnet |
Test aUSDC | For integration testing only |
Confirmed end-to-end on 2026-04-14 against api1.ilovechicken.co.uk:
| Test | Network | Result |
|---|---|---|
| Webhook → checkout link | algorand_mainnet (USDC (ASA 31566704)) |
Pass |
| Webhook → checkout link | voi_mainnet (WAD (ARC200 app ID 47138068)) |
Pass |
| Webhook → checkout link | hedera_mainnet (USDC (token 0.0.456858)) |
Pass |
| Webhook → checkout link | stellar_mainnet (USDC (Circle)) |
Pass |
Signature: HMAC-SHA256 base64 in X-Ecwid-Webhook-Signature. Amount field: data.total (float, major units).