Balance
Money in the account and its history.
GET /balance
Funds, earnings and what can be spent
Scope: balance:read, or the broad read.
Parameters
| Name | Where | Description |
|---|---|---|
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
| Field | Type | Description |
|---|---|---|
available | money | |
funds | money | |
earnings | money | |
withdrawals_restricted | boolean |
{
"data": {
"available": {
"amount": "12.50",
"currency": "USD"
},
"funds": {
"amount": "12.50",
"currency": "USD"
},
"earnings": {
"amount": "12.50",
"currency": "USD"
},
"withdrawals_restricted": true
},
"meta": {
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
GET /balance/deposits
Deposits to the balance
Scope: balance:read, or the broad read. Newest first, by id.
Parameters
| Name | Where | Description |
|---|---|---|
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/deposits" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
id | integer | |
order_id | integer | |
amount | money | The amount paid for the whole line. Do not multiply by quantity. |
quantity | integer | |
created_at | timestamp or null | |
cancelled | boolean | |
site | string |
{
"data": [
{
"id": 1024,
"order_id": 1024,
"amount": {
"amount": "12.50",
"currency": "USD"
},
"quantity": 1,
"created_at": "2026-10-10T14:03:22Z",
"cancelled": true,
"site": "SEOClerks"
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | bad_cursor invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
GET /balance/earnings
Sales earnings posted to the balance
Scope: balance:read, or the broad read. Newest first, by id.
Parameters
| Name | Where | Description |
|---|---|---|
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/earnings" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
id | integer | |
amount | money | |
payment_id | integer | |
created_at | timestamp or null | |
site | string |
{
"data": [
{
"id": 1024,
"amount": {
"amount": "12.50",
"currency": "USD"
},
"payment_id": 1024,
"created_at": "2026-10-10T14:03:22Z",
"site": "SEOClerks"
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | bad_cursor invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
GET /balance/fees
Seller fees and buyer invoices
Scope: balance:read, or the broad read. Newest first, by id.
Parameters
| Name | Where | Description |
|---|---|---|
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/fees" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
order_id | integer | |
title | string | |
status | integer | |
order_total | money | |
fee | money | |
paid | boolean | |
created_at | timestamp or null |
{
"data": [
{
"order_id": 1024,
"title": "Logo design",
"status": 1,
"order_total": {
"amount": "12.50",
"currency": "USD"
},
"fee": {
"amount": "12.50",
"currency": "USD"
},
"paid": true,
"created_at": "2026-10-10T14:03:22Z"
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | bad_cursor invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
GET /balance/payments
Payments made
Scope: balance:read, or the broad read. Newest first, by id.
Parameters
| Name | Where | Description |
|---|---|---|
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/payments" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
id | integer | |
order_id | integer | |
amount | money | The amount paid for the whole line. Do not multiply by quantity. |
quantity | integer | |
created_at | timestamp or null | |
cancelled | boolean | |
site | string |
{
"data": [
{
"id": 1024,
"order_id": 1024,
"amount": {
"amount": "12.50",
"currency": "USD"
},
"quantity": 1,
"created_at": "2026-10-10T14:03:22Z",
"cancelled": true,
"site": "SEOClerks"
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | bad_cursor invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |
GET /balance/revenue
Revenue for a date range
Scope: balance:read, or the broad read.
Default: the last 30 days. At most 366 days.
Parameters
| Name | Where | Description |
|---|---|---|
from | query | First day, UTC, inclusive. |
to | query | Last day, UTC, inclusive. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/revenue" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
| Field | Type | Description |
|---|---|---|
from | timestamp | |
to_exclusive | timestamp | |
sales_credited | money | |
affiliate_credited | money | |
recorded_sales | list of object | |
recorded_sales[].state | string | |
recorded_sales[].orders | integer | |
recorded_sales[].payments | integer | |
recorded_sales[].payment_amount | money | |
daily | list of object | Days with no credit are omitted. |
daily[].date | timestamp | |
daily[].sales_credited | money | |
daily[].affiliate_credited | money |
{
"data": {
"from": "2026-10-10T14:03:22Z",
"to_exclusive": "2026-10-10T14:03:22Z",
"sales_credited": {
"amount": "12.50",
"currency": "USD"
},
"affiliate_credited": {
"amount": "12.50",
"currency": "USD"
},
"recorded_sales": [
{
"state": "pending",
"orders": 1,
"payments": 1,
"payment_amount": {
"amount": "12.50",
"currency": "USD"
}
}
],
"daily": [
{
"date": "2026-10-10T14:03:22Z",
"sales_credited": {
"amount": "12.50",
"currency": "USD"
},
"affiliate_credited": {
"amount": "12.50",
"currency": "USD"
}
}
]
},
"meta": {
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | invalid_date invalid_parameter invalid_range |
| 429 | rate_limited |
| 500 | internal_error |
GET /balance/sales
Payments received as a seller
Scope: balance:read, or the broad read. Newest first, by id.
Includes pending and direct receipts.
Parameters
| Name | Where | Description |
|---|---|---|
cursor | query | meta.next_cursor from the previous page. Up to 1024 characters. |
limit | query | Page size. Above 100 is treated as 100. At least 1. Default 25. |
If-None-Match | header | An ETag from an earlier response. |
Example request
curl "https://www.seoclerk.com/api/v1/balance/sales" \
-H "Authorization: Bearer $SEOCLERKS_API_KEY"
Response 200
A page of these in data, with meta.limit and meta.next_cursor.
| Field | Type | Description |
|---|---|---|
id | integer | |
order_id | integer | |
payment_amount | money | |
status | integer | The order's status. |
cancelled | boolean | |
credited_to_balance | money or null | |
direct_payment | boolean | Paid to the seller's own gateway. |
processed | boolean | |
created_at | timestamp or null | |
cleared_at | timestamp or null | |
site | string | |
buyer_id | integer | On balance/sales. |
fee_paid | boolean | On affiliates/payments. |
{
"data": [
{
"id": 1024,
"order_id": 1024,
"payment_amount": {
"amount": "12.50",
"currency": "USD"
},
"status": 1,
"cancelled": true,
"credited_to_balance": {
"amount": "12.50",
"currency": "USD"
},
"direct_payment": true,
"processed": true,
"created_at": "2026-10-10T14:03:22Z",
"cleared_at": "2026-10-10T14:03:22Z",
"site": "SEOClerks",
"buyer_id": 1024,
"fee_paid": true
}
],
"meta": {
"limit": 1,
"next_cursor": "string",
"request_id": "9f2c4e1ab07d3351"
}
}
Errors
| Status | Codes |
|---|---|
| 400 | https_required key_in_query |
| 401 | account_unavailable invalid_credentials key_expired key_revoked |
| 403 | missing_scope |
| 404 | not_found |
| 405 | method_not_allowed |
| 422 | bad_cursor invalid_id invalid_parameter |
| 429 | rate_limited |
| 500 | internal_error |