On this page
List
Page through your payment channels newest first with cursor pagination, and filter by project, status or your own external ID.
GET/v1/payment-channels
API key: Payment
Returns the channels visible to this credential, newest first. Use it to reconcile your own payer records against ours, or to find a channel by the external_id you assigned.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit |
integer | 20 |
Page size from 1 to 100. |
cursor |
string | — | Opaque cursor from the previous page's next_cursor. |
status |
string | — | active, blocked or provisioning. May be repeated; duplicates are rejected. |
external_id |
string | — | Exact match on the identifier you supplied at creation. |
project_id |
string | — | Restrict to one project (prj_…). |
Any other parameter is rejected. There is no external_order_id and no created_from / created_to: those belong to invoices and withdrawals, not to channels.
Example
GET /v1/payment-channels?limit=50&status=active&status=provisioning HTTP/1.1
Host: api.paymos.io
Authorization: HMAC-SHA256 pk_live_…:…
X-Request-Timestamp: 1767225660
Response (200 OK)
{
"items": [
{
"id": "pc_2QhKZv6mRt9WdA3nYpLbXf",
"project_id": "prj_xFukZuAJZR06pLVBh3uwzv",
"external_id": "customer-42",
"status": "active",
"is_accepting_payments": true,
"is_fully_provisioned": false,
"is_test": false,
"applied_fee_percent": 1.0,
"customer_fee_percent": 0,
"networks": [
{
"network": "TRC20",
"status": "active",
"address": "TN3W4H6rK2ce4vX9YnFQHwKENnHjoxb3m9",
"tokens": [
{ "symbol": "USDT", "minimum_deposit": "1.00" },
{ "symbol": "USDC", "minimum_deposit": "1.00" }
]
},
{
"network": "ERC20",
"status": "active",
"address": "0x9f2a6c1b4e8d7350ab11c9e5f0d2743b86ce41d9",
"tokens": [
{ "symbol": "USDT", "minimum_deposit": "12.00" },
{ "symbol": "USDC", "minimum_deposit": "12.00" }
]
},
{
"network": "SOL",
"status": "provisioning",
"tokens": [
{ "symbol": "USDC", "minimum_deposit": null }
]
}
],
"created_at": 1767225600,
"updated_at": 1767225780
},
{
"id": "pc_6BwTyH4nPl8QmZ2vKrJdSc",
"project_id": "prj_xFukZuAJZR06pLVBh3uwzv",
"external_id": "customer-41",
"status": "provisioning",
"is_accepting_payments": false,
"is_fully_provisioned": false,
"is_test": false,
"applied_fee_percent": 1.0,
"customer_fee_percent": 0,
"networks": [
{
"network": "TRC20",
"status": "provisioning",
"tokens": [
{ "symbol": "USDT", "minimum_deposit": null },
{ "symbol": "USDC", "minimum_deposit": null }
]
},
{
"network": "ERC20",
"status": "provisioning",
"tokens": [
{ "symbol": "USDT", "minimum_deposit": null },
{ "symbol": "USDC", "minimum_deposit": null }
]
},
{
"network": "SOL",
"status": "provisioning",
"tokens": [
{ "symbol": "USDC", "minimum_deposit": null }
]
}
],
"created_at": 1767225540,
"updated_at": 1767225540
}
],
"next_cursor": "CfDJ8JvN…"
}
Pagination
Ordering is created_at then channel id, both descending, so the sequence is stable while you page.
- —
next_cursorisnullon the last page. That is the signal to stop. - —A cursor is bound to the filters that produced it. Change
status,external_idorproject_idand reuse the old cursor and you get400 pagination_cursor_invalid— the alternative would be silently skipping rows you never saw. - —Cursors expire 24 hours after they are issued. Restart from the first page after that.
- —A
project_idoutside your credential's scope returns an empty page rather than a 404, so the API never confirms whether a project you cannot see exists.
Errors
| Code | HTTP | When |
|---|---|---|
payment_channels_disabled |
503 | Payment channels are not enabled for your account in this environment. |
payment_key_required |
403 | The request was signed with a Payout (rk_) key. |
pagination_cursor_invalid |
400 | The cursor is malformed, expired, or bound to different filters. |
field_invalid_enum |
400 | An unknown status value. |
field_invalid_format |
400 | project_id is not a valid prj_ identifier, or status was repeated with the same value twice. |
payment_channel_external_id_invalid |
400 | external_id is longer than 128 characters. |
field_out_of_range |
400 | limit is outside 1–100. |
query_parameter_unknown |
400 | A parameter that is not in the table above. |
See Error Codes for the full catalogue.