API reference / Operations by tag
billing
Statements, payout runs and rails, advertiser invoices, top-ups, tax, KYC and dunning.
85 operations. Base URL https://api.metrixed.com/v1; see authentication, errors and pagination.
Operations
| Method | Path | Summary |
|---|---|---|
| GET | /advertiser/invoice-status | Advertiser: invoices with paid/outstanding/pay link |
| GET | /advertiser/invoices | Advertiser invoices |
| POST | /advertiser/topups | Advertiser portal: request a prepaid top-up (the network confirms the payment and books it) |
| GET | /advertisers/{id}/wallet | An advertiser's prepaid wallet |
| PUT | /advertisers/{id}/wallet | Turn the prepaid wallet on / off and set its currency, alert threshold, pause level and automatic pausing (on: advertisers.billing.mode = prepaid, approved revenue is drawn from the balance) |
| GET | /advertisers/{id}/wallet/ledger | Credits and draws on the advertiser's prepaid account (paged) |
| POST | /advertisers/{id}/wallet/topups | Top up a prepaid wallet: manual (money received, booked now: Dr cash / Cr advertiser_prepaid) or invoice (a pro-forma mailed to the advertiser, booked on confirmation) |
| POST | /advertisers/{id}/wallet/topups/{tid}/cancel | Cancel a pending top-up |
| POST | /advertisers/{id}/wallet/topups/{tid}/confirm | Book a pending (invoiced) top-up once the money arrived; offers the wallet paused resume when the balance is back above the pause level |
| GET | /billing/accounting-exports | Accounting export history |
| POST | /billing/accounting-exports | Export to QuickBooks/Xero/NetSuite/Tally |
| GET | /billing/advertiser-invoices | List advertiser invoices |
| POST | /billing/advertiser-invoices | Generate an advertiser invoice from un-invoiced approved conversions in the period (422 nothing_to_bill) |
| GET | /billing/advertiser-invoices/{id} | Get an advertiser invoice with lines, payments, outstanding amount and payment link (include=html for the document) |
| PATCH | /billing/advertiser-invoices/{id} | Move an advertiser invoice draft -> approved -> sent, or void it before any payment |
| PUT | /billing/advertiser-invoices/{id}/payment-link | Set invoice payment link |
| POST | /billing/advertiser-invoices/{id}/payments | Record a (partial) invoice payment |
| GET | /billing/advertiser-invoices/search | Search advertiser invoices with advertiser names, paid and outstanding amounts |
| GET | /billing/dunning/log | Dunning log |
| GET | /billing/dunning/preview | Preview the next dunning pass |
| GET | /billing/dunning/schedule | Dunning schedule |
| PUT | /billing/dunning/schedule | Set dunning schedule |
| GET | /billing/fx-rates | FX rates |
| PUT | /billing/fx-rates | Override FX rate |
| GET | /billing/invoice-status | Invoices with paid/outstanding/pay link |
| GET | /billing/kyc | Partner KYC status |
| PUT | /billing/kyc/{partner_id} | Manual KYC override |
| GET | /billing/kyc/{partner_id}/documents | A partner's KYC documents |
| POST | /billing/kyc/{partner_id}/documents | Attach a KYC document on the partner's behalf (multipart: doc_type, file) |
| DELETE | /billing/kyc/documents/{id} | Remove a KYC document (manage_billing) |
| GET | /billing/kyc/documents/{id}/file | Download a KYC document; ?inline=1 serves it for in-page viewing (sandboxed) |
| POST | /billing/kyc/documents/{id}/review | Accept or reject a KYC document (note required to reject; manage_billing) |
| GET | /billing/payment-methods | List partner payment methods |
| POST | /billing/payment-methods | Add partner payment method |
| DELETE | /billing/payment-methods/{id} | Delete payment method |
| POST | /billing/payment-methods/{id}/default | Make this payment method the partner's default (others are unset) |
| GET | /billing/payout-providers | List configured payout providers |
| PUT | /billing/payout-providers/{provider} | Configure payout provider (secrets sealed) |
| GET | /billing/payout-rails/eligible | Statements eligible for payout, with blockers |
| GET | /billing/payout-rails/runs | List payout runs with execution state |
| POST | /billing/payout-rails/runs | Create payout run from eligible statements (maker) |
| POST | /billing/payout-rails/runs/{id}/approve | Approve payout run (checker, manage_billing) |
| GET | /billing/payout-rails/runs/{id}/bank-file | Download SEPA pain.001 / NACHA / India CSV |
| GET | /billing/payout-rails/runs/{id}/items | Per-item payout status |
| POST | /billing/payout-rails/runs/{id}/mark-paid | Settle bank-file items after the bank executed them |
| POST | /billing/payout-rails/runs/{id}/reject | Reject payout run |
| POST | /billing/payout-rails/runs/{id}/requeue | Requeue failed items |
| GET | /billing/payout-runs | List payout runs |
| POST | /billing/payout-runs | Create payout run from unpaid statements (one currency) |
| POST | /billing/payout-runs/{id}/approve | Approve payout run |
| POST | /billing/sanctions/load | Load sanctions list (CSV) |
| GET | /billing/statements | List statements |
| POST | /billing/statements | Generate statements |
| GET | /billing/statements/{id} | Get statement |
| PATCH | /billing/statements/{id} | Update statement status |
| POST | /billing/statements/generate | Generate statements for every eligible partner (or partner_ids[]) for a period; partners with nothing to bill are skipped |
| GET | /billing/statements/search | Search statements with partner names: q (number or partner), status, payment_status, currency, partner_id (comma lists), from, to, overdue, sort, page, page_size |
| GET | /billing/summary | Money position per currency: unbilled earnings, payables, receivables, aging buckets, monthly billed vs paid, payout runs needing attention |
| GET | /billing/tax-exports | 1099-NEC / DAC7 export history |
| POST | /billing/tax-exports | Generate 1099-NEC (CSV) or DAC7 (XML) |
| GET | /billing/tax-forms | Tax forms awaiting review |
| POST | /billing/tax-forms/{id}/review | Verify or reject a tax form |
| POST | /billing/tax-ids/validate | Validate VAT/HMRC/GSTIN (format, checksum, optional registry) |
| GET | /billing/wallets | Every advertiser prepaid wallet with balance, threshold, state, spend over 7 days and offers paused by the wallet |
| GET | /partner/billing | Partner billing profile |
| PUT | /partner/billing | Update billing/payment method |
| GET | /partner/compliance | Partner: KYC, withholding and tax form status |
| GET | /partner/kyc/documents | Partner: my KYC documents |
| POST | /partner/kyc/documents | Partner: upload a KYC document (multipart: doc_type, file PDF/PNG/JPEG max 10 MB) |
| GET | /partner/payment-methods | Partner: my payment methods |
| POST | /partner/payment-methods | Partner: add payment method |
| GET | /partner/statements | Partner statements |
| GET | /partner/tax-forms | Partner: my tax forms |
| POST | /partner/tax-forms | Partner: upload W-9/W-8 (multipart) |
| POST | /payout-webhooks/{tenant}/{provider} | Payout provider webhook (signature-verified) |
| GET | /revshare-runs | List RevshareRuns |
| POST | /revshare-runs | Create RevshareRun |
| GET | /revshare-runs/{id} | Get RevshareRun |
| PATCH | /revshare-runs/{id} | Update RevshareRun |
| DELETE | /revshare-runs/{id} | Delete RevshareRun |
| POST | /revshare-runs/{id}/execute | Execute a pending revshare run now |
| GET | /revshare-runs/{id}/items | Restated conversions of a run |
| POST | /revshare-runs/bulk/apply | Bulk edit apply |
| POST | /revshare-runs/bulk/preview | Bulk edit preview |
| POST | /revshare-runs/search | Search RevshareRuns (advanced) |
GET /advertiser/invoice-status
Advertiser: invoices with paid/outstanding/pay link Advertiser: invoices with paid/outstanding/pay link. WP-67: paged; q matches the invoice number; counts per state.
Operation getAdvertiserInvoiceStatus. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no | |
sort | query | string | no | |
state | query | string | no | |
pay_state | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/advertiser/invoice-status?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
GET /advertiser/invoices
Advertiser invoices
Operation getAdvertiserInvoices. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/advertiser/invoices?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /advertiser/topups
Advertiser portal: request a prepaid top-up (the network confirms the payment and books it)
Operation postAdvertiserTopups. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): PortalDoc
curl -X POST 'https://api.metrixed.com/v1/advertiser/topups' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{}'
Example 201 response:
{}
GET /advertisers/{id}/wallet
An advertiser's prepaid wallet
Operation getAdvertisersIdWallet. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json AdvertiserWallet |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/advertisers/<id>/wallet' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"advertiser_id": "",
"advertiser_name": "",
"configured": false,
"enabled": false
}
PUT /advertisers/{id}/wallet
Turn the prepaid wallet on / off and set its currency, alert threshold, pause level and automatic pausing (on: advertisers.billing.mode = prepaid, approved revenue is drawn from the balance)
Operation putAdvertisersIdWallet. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): AdvertiserWalletUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
enabled | boolean | ||
currency | string | ||
low_balance_threshold | string | decimal string | |
auto_pause | boolean | ||
pause_at | string | decimal string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json AdvertiserWallet |
| default | error | application/json Error |
curl -X PUT 'https://api.metrixed.com/v1/advertisers/<id>/wallet' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"enabled":false,"currency":"","low_balance_threshold":"","auto_pause":false}'
Example 200 response:
{
"advertiser_id": "",
"advertiser_name": "",
"configured": false,
"enabled": false
}
GET /advertisers/{id}/wallet/ledger
Credits and draws on the advertiser's prepaid account (paged)
Operation getAdvertisersIdWalletLedger. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json WalletLedger |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/advertisers/<id>/wallet/ledger?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"has_more": false
}
POST /advertisers/{id}/wallet/topups
Top up a prepaid wallet: manual (money received, booked now: Dr cash / Cr advertiser_prepaid) or invoice (a pro-forma mailed to the advertiser, booked on confirmation)
Operation postAdvertisersIdWalletTopups. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): WalletTopupRequest
| Field | Type | Flags | Description |
|---|---|---|---|
amount | string | required | decimal string |
currency | string | ||
method | enum: manual, invoice | ||
reference | string | ||
rail | string | ||
note | string | ||
due_days | integer |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json WalletTopupCreated |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/advertisers/<id>/wallet/topups' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"amount":""}'
Example 201 response:
{
"topup_id": "",
"reference": "",
"invoice_number": "",
"wallet": {}
}
POST /advertisers/{id}/wallet/topups/{tid}/cancel
Cancel a pending top-up
Operation postAdvertisersIdWalletTopupsTidCancel. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
tid | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json AdvertiserWallet |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/advertisers/<id>/wallet/topups/<tid>/cancel' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"advertiser_id": "",
"advertiser_name": "",
"configured": false,
"enabled": false
}
POST /advertisers/{id}/wallet/topups/{tid}/confirm
Book a pending (invoiced) top-up once the money arrived; offers the wallet paused resume when the balance is back above the pause level
Operation postAdvertisersIdWalletTopupsTidConfirm. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
tid | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json AdvertiserWallet |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/advertisers/<id>/wallet/topups/<tid>/confirm' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"advertiser_id": "",
"advertiser_name": "",
"configured": false,
"enabled": false
}
GET /billing/accounting-exports
Accounting export history Accounting export history. WP-71: paged with page/page_size (page.total over the whole match); unpaged returns the previous bound with total and capped/cap.
Operation getBillingAccountingExports. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/accounting-exports?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/accounting-exports
Export to QuickBooks/Xero/NetSuite/Tally
Operation postBillingAccountingExports. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/billing/accounting-exports' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 201 response:
{
"ok": false
}
GET /billing/advertiser-invoices
List advertiser invoices
Operation getBillingAdvertiserInvoices. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/advertiser-invoices?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/advertiser-invoices
Generate an advertiser invoice from un-invoiced approved conversions in the period (422 nothing_to_bill)
Operation postBillingAdvertiserInvoices. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): AdvertiserInvoiceCreate
| Field | Type | Flags | Description |
|---|---|---|---|
advertiser_id | string | required | |
period_from | string (date) | required | |
period_to | string (date) | required | |
currency | string | ||
net_terms | integer |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json AdvertiserInvoice |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/billing/advertiser-invoices' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"advertiser_id":"","period_from":"","period_to":""}'
Example 201 response:
{
"external_ref": ""
}
GET /billing/advertiser-invoices/{id}
Get an advertiser invoice with lines, payments, outstanding amount and payment link (include=html for the document)
Operation getBillingAdvertiserInvoicesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
include | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json AdvertiserInvoiceDetail |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/advertiser-invoices/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{}
PATCH /billing/advertiser-invoices/{id}
Move an advertiser invoice draft -> approved -> sent, or void it before any payment
Operation patchBillingAdvertiserInvoicesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): AdvertiserInvoicePatch
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json AdvertiserInvoiceDetail |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/billing/advertiser-invoices/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{}'
Example 200 response:
{}
PUT /billing/advertiser-invoices/{id}/payment-link
Set invoice payment link
Operation putBillingAdvertiserInvoicesIdPaymentLink. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X PUT 'https://api.metrixed.com/v1/billing/advertiser-invoices/<id>/payment-link' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"ok": false
}
POST /billing/advertiser-invoices/{id}/payments
Record a (partial) invoice payment
Operation postBillingAdvertiserInvoicesIdPayments. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/billing/advertiser-invoices/<id>/payments' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 201 response:
{
"ok": false
}
GET /billing/advertiser-invoices/search
Search advertiser invoices with advertiser names, paid and outstanding amounts
Operation getBillingAdvertiserInvoicesSearch. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
status | query | string | no | |
currency | query | string | no | |
advertiser_id | query | string | no | |
overdue | query | string | no | |
sort | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json InvoiceSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/advertiser-invoices/search?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{}
GET /billing/dunning/log
Dunning log Dunning log. WP-71: paged with page/page_size (page.total over the whole match); unpaged returns the previous bound with total and capped/cap.
Operation getBillingDunningLog. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/dunning/log?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
GET /billing/dunning/preview
Preview the next dunning pass
Operation getBillingDunningPreview. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/dunning/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
GET /billing/dunning/schedule
Dunning schedule
Operation getBillingDunningSchedule. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/billing/dunning/schedule' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
PUT /billing/dunning/schedule
Set dunning schedule
Operation putBillingDunningSchedule. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X PUT 'https://api.metrixed.com/v1/billing/dunning/schedule' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"ok": false
}
GET /billing/fx-rates
FX rates
Operation getBillingFxRates. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/fx-rates?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
PUT /billing/fx-rates
Override FX rate
Operation putBillingFxRates. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): FxRate
| Field | Type | Flags | Description |
|---|---|---|---|
base | string | ||
quote | string | ||
rate | string | decimal string | |
source | string | ||
rate_date | string (date) |
curl -X PUT 'https://api.metrixed.com/v1/billing/fx-rates' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"base":"","quote":"","rate":"","source":""}'
Example 200 response:
{
"base": "",
"quote": "",
"rate": "",
"source": ""
}
GET /billing/invoice-status
Invoices with paid/outstanding/pay link Invoices with paid/outstanding/pay link. WP-67: paged; q matches the invoice number or advertiser; state open|overdue|paid|void; counts {all, open, overdue, paid, void}.
Operation getBillingInvoiceStatus. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no | |
sort | query | string | no | |
advertiser_id | query | string | no | |
state | query | string | no | |
pay_state | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/invoice-status?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
GET /billing/kyc
Partner KYC status Partner KYC status. WP-67: paged; q matches the partner name or id; status pending|verified|rejected|hits|unscreened; counts {all, verified, pending, rejected, hits, unscreened} are tenant-wide.
Operation getBillingKyc. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
status | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/kyc?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
PUT /billing/kyc/{partner_id}
Manual KYC override
Operation putBillingKycPartnerId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
partner_id | path | string | yes |
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X PUT 'https://api.metrixed.com/v1/billing/kyc/<partner_id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"ok": false
}
GET /billing/kyc/{partner_id}/documents
A partner's KYC documents
Operation getBillingKycPartnerIdDocuments. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
partner_id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/kyc/<partner_id>/documents' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/kyc/{partner_id}/documents
Attach a KYC document on the partner's behalf (multipart: doc_type, file)
Operation postBillingKycPartnerIdDocuments. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
partner_id | path | string | yes |
Request body (application/json, required): any
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json KYCDocument |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/billing/kyc/<partner_id>/documents' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 201 response:
{}
DELETE /billing/kyc/documents/{id}
Remove a KYC document (manage_billing)
Operation deleteBillingKycDocumentsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/billing/kyc/documents/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
GET /billing/kyc/documents/{id}/file
Download a KYC document; ?inline=1 serves it for in-page viewing (sandboxed)
Operation getBillingKycDocumentsIdFile. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
inline | query | string | no |
curl 'https://api.metrixed.com/v1/billing/kyc/documents/<id>/file' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
POST /billing/kyc/documents/{id}/review
Accept or reject a KYC document (note required to reject; manage_billing)
Operation postBillingKycDocumentsIdReview. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): KYCDocumentReview
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json KYCDocument |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/billing/kyc/documents/<id>/review' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{}'
Example 200 response:
{}
GET /billing/payment-methods
List partner payment methods List partner payment methods. WP-67: paged; q matches partner name, label, type or details hint; summary {default_by_type, partners_without_default} is tenant-wide.
Operation getBillingPaymentMethods. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
partner_id | query | string | no | |
type | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/payment-methods?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/payment-methods
Add partner payment method
Operation postBillingPaymentMethods. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): PaymentMethodCreate
| Field | Type | Flags | Description |
|---|---|---|---|
partner_id | string | required | |
type | enum: paypal, payoneer, tipalti, wise, stripe, crypto, sepa, ach, india_bank, wire, manual | required | |
currency | string | ||
label | string | ||
details | object (free-form) | type-specific, write-only: paypal email | payoneer/tipalti payee_id | wise recipient_id | stripe account_id | crypto address+network | sepa iban(+bic) | ach routing+account | india_bank account+ifsc | |
is_default | boolean |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json PaymentMethod |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/billing/payment-methods' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"partner_id":"","type":"paypal"}'
Example 201 response:
{
"external_ref": ""
}
DELETE /billing/payment-methods/{id}
Delete payment method
Operation deleteBillingPaymentMethodsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/billing/payment-methods/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /billing/payment-methods/{id}/default
Make this payment method the partner's default (others are unset)
Operation postBillingPaymentMethodsIdDefault. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json PaymentMethodDefault |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/billing/payment-methods/<id>/default' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{}
GET /billing/payout-providers
List configured payout providers
Operation getBillingPayoutProviders. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/payout-providers' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
PUT /billing/payout-providers/{provider}
Configure payout provider (secrets sealed)
Operation putBillingPayoutProvidersProvider. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
provider | path | string | yes |
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X PUT 'https://api.metrixed.com/v1/billing/payout-providers/<provider>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"ok": false
}
GET /billing/payout-rails/eligible
Statements eligible for payout, with blockers
Operation getBillingPayoutRailsEligible. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/payout-rails/eligible' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
GET /billing/payout-rails/runs
List payout runs with execution state List payout runs with execution state. WP-71: paged with page/page_size (page.total over the whole match); unpaged returns the previous bound with total and capped/cap.
Operation getBillingPayoutRailsRuns. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/payout-rails/runs?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/payout-rails/runs
Create payout run from eligible statements (maker)
Operation postBillingPayoutRailsRuns. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/billing/payout-rails/runs' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 201 response:
{
"external_ref": ""
}
POST /billing/payout-rails/runs/{id}/approve
Approve payout run (checker, manage_billing)
Operation postBillingPayoutRailsRunsIdApprove. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/billing/payout-rails/runs/<id>/approve' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
GET /billing/payout-rails/runs/{id}/bank-file
Download SEPA pain.001 / NACHA / India CSV
Operation getBillingPayoutRailsRunsIdBankFile. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl 'https://api.metrixed.com/v1/billing/payout-rails/runs/<id>/bank-file' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /billing/payout-rails/runs/{id}/items
Per-item payout status
Operation getBillingPayoutRailsRunsIdItems. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/payout-rails/runs/<id>/items' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/payout-rails/runs/{id}/mark-paid
Settle bank-file items after the bank executed them
Operation postBillingPayoutRailsRunsIdMarkPaid. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/billing/payout-rails/runs/<id>/mark-paid' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
POST /billing/payout-rails/runs/{id}/reject
Reject payout run
Operation postBillingPayoutRailsRunsIdReject. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/billing/payout-rails/runs/<id>/reject' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
POST /billing/payout-rails/runs/{id}/requeue
Requeue failed items
Operation postBillingPayoutRailsRunsIdRequeue. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/billing/payout-rails/runs/<id>/requeue' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /billing/payout-runs
List payout runs
Operation getBillingPayoutRuns. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/payout-runs?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/payout-runs
Create payout run from unpaid statements (one currency)
Operation postBillingPayoutRuns. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): PayoutRunCreate
| Field | Type | Flags | Description |
|---|---|---|---|
statement_ids | array of string | required | |
rail | string | default wire | |
name | string | ||
currency | string |
curl -X POST 'https://api.metrixed.com/v1/billing/payout-runs' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"statement_ids":[""]}'
Example 201 response:
{
"external_ref": ""
}
POST /billing/payout-runs/{id}/approve
Approve payout run
Operation postBillingPayoutRunsIdApprove. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/billing/payout-runs/<id>/approve' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
POST /billing/sanctions/load
Load sanctions list (CSV)
Operation postBillingSanctionsLoad. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/billing/sanctions/load' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"ok": false
}
GET /billing/statements
List statements
Operation getBillingStatements. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/statements?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/statements
Generate statements
Operation postBillingStatements. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Statement
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
display_id | integer | read-only | |
hash_id | string | read-only | |
external_ref | string | ||
custom_fields | object (free-form) | tenant-defined fields | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only | |
deleted_at | string (date-time) | read-only | |
partner_id | string | ||
number | string | ||
period_from | string (date) | ||
period_to | string (date) | ||
currency | string | ||
subtotal | string | decimal string | |
tax | string | decimal string | |
tax_rule | string | ||
withholding | string | decimal string | |
total | string | decimal string | |
status | enum: draft, approved, sent, partially_paid, paid, void | ||
payment_status | enum: not_initiated, in_progress, complete, failed | ||
due_on | string (date) | ||
lines | array of object (free-form) | ||
adjustments | array of object (free-form) | ||
paid_at | string (date-time) | ||
pdf_ref | string |
curl -X POST 'https://api.metrixed.com/v1/billing/statements' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"external_ref":""}'
Example 202 response:
{
"external_ref": ""
}
GET /billing/statements/{id}
Get statement
Operation getBillingStatementsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl 'https://api.metrixed.com/v1/billing/statements/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /billing/statements/{id}
Update statement status
Operation patchBillingStatementsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): Statement
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
display_id | integer | read-only | |
hash_id | string | read-only | |
external_ref | string | ||
custom_fields | object (free-form) | tenant-defined fields | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only | |
deleted_at | string (date-time) | read-only | |
partner_id | string | ||
number | string | ||
period_from | string (date) | ||
period_to | string (date) | ||
currency | string | ||
subtotal | string | decimal string | |
tax | string | decimal string | |
tax_rule | string | ||
withholding | string | decimal string | |
total | string | decimal string | |
status | enum: draft, approved, sent, partially_paid, paid, void | ||
payment_status | enum: not_initiated, in_progress, complete, failed | ||
due_on | string (date) | ||
lines | array of object (free-form) | ||
adjustments | array of object (free-form) | ||
paid_at | string (date-time) | ||
pdf_ref | string |
curl -X PATCH 'https://api.metrixed.com/v1/billing/statements/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"external_ref":""}'
Example 200 response:
{
"external_ref": ""
}
POST /billing/statements/generate
Generate statements for every eligible partner (or partner_ids[]) for a period; partners with nothing to bill are skipped
Operation postBillingStatementsGenerate. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): StatementGenerateRequest
| Field | Type | Flags | Description |
|---|---|---|---|
period_from | string (date) | required | |
period_to | string (date) | required | |
partner_ids | array of string | ||
partner_id | string | ||
currency | string | ||
net_terms | integer | ||
threshold | string | money; partners below it are skipped | |
basis | string |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json StatementGenerateResult |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/billing/statements/generate' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"period_from":"","period_to":""}'
Example 201 response:
{}
GET /billing/statements/search
Search statements with partner names: q (number or partner), status, payment_status, currency, partner_id (comma lists), from, to, overdue, sort, page, page_size
Operation getBillingStatementsSearch. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
status | query | string | no | |
payment_status | query | string | no | |
currency | query | string | no | |
partner_id | query | string | no | |
from | query | string | no | |
to | query | string | no | |
overdue | query | string | no | |
sort | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json StatementSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/statements/search?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{}
GET /billing/summary
Money position per currency: unbilled earnings, payables, receivables, aging buckets, monthly billed vs paid, payout runs needing attention
Operation getBillingSummary. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BillingSummary |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/summary' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{}
GET /billing/tax-exports
1099-NEC / DAC7 export history 1099-NEC / DAC7 export history. WP-71: paged with page/page_size (page.total over the whole match); unpaged returns the previous bound with total and capped/cap.
Operation getBillingTaxExports. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/tax-exports?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/tax-exports
Generate 1099-NEC (CSV) or DAC7 (XML)
Operation postBillingTaxExports. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/billing/tax-exports' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 201 response:
{
"ok": false
}
GET /billing/tax-forms
Tax forms awaiting review Tax forms awaiting review. WP-67: paged; q matches partner name, form type or file name; counts per status.
Operation getBillingTaxForms. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
status | query | string | no | |
partner_id | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/tax-forms?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /billing/tax-forms/{id}/review
Verify or reject a tax form
Operation postBillingTaxFormsIdReview. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/billing/tax-forms/<id>/review' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"external_ref": ""
}
POST /billing/tax-ids/validate
Validate VAT/HMRC/GSTIN (format, checksum, optional registry)
Operation postBillingTaxIdsValidate. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/billing/tax-ids/validate' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"ok": false
}
GET /billing/wallets
Every advertiser prepaid wallet with balance, threshold, state, spend over 7 days and offers paused by the wallet
Operation getBillingWallets. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json AdvertiserWalletList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/billing/wallets' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"total": 0
}
GET /partner/billing
Partner billing profile
Operation getPartnerBilling. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/partner/billing' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PUT /partner/billing
Update billing/payment method
Operation putPartnerBilling. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): PartnerUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
company | string | ||
username | string | ||
status | enum: active, pending, paused, inactive, suspended, rejected, disabled | ||
tags | array of string | ||
account_manager_id | string | ||
account_executive_id | string | ||
tier_id | string | ||
referrer_partner_id | string | ||
traffic_source_id | string | ||
business_unit_id | string | ||
internal_notes | string | ||
is_demo | boolean | ||
contact | object (free-form) | email, phone, website, instant_messaging{type,id}, address{...}, region{currency,lang,country} | |
tracking | object (free-form) | default_tracking_domain_id, macro_defaults{sub1..sub10,source,app_name,app_id,gaid}, enable_media_cost_tracking_links, blocked_sources[], whitelisted_advertiser_ids[], allowed_tracking_link_format, postback_whitelist_ips[], can_see_advertiser_names | |
conversions_pending_default | boolean | ||
visibility_overrides | object (free-form) | adv1..adv10, sale_amount -> bool | |
billing | object (free-form) | currency, billing_frequency, billing_details{day_of_week,day_of_month_one,day_of_month_two,day_of_month,starting_month}, payment_method, payment_details{...}, tax_id, tax_form{type,status,file_ref}, is_invoice_creation_auto, auto_invoice_start_date, default_invoice_is_hidden, invoice_generation_days_delay, invoice_amount_threshold, default_payment_terms, payment_hold{on,reason}, vat_rate, reverse_charge | |
compliance | object (free-form) | accepted_terms_version, accepted_terms_at, kyc_status, risk_score | |
signup_answers | object (free-form) |
curl -X PUT 'https://api.metrixed.com/v1/partner/billing' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","company":"","username":"","status":"active"}'
Example 200 response:
{
"external_ref": ""
}
GET /partner/compliance
Partner: KYC, withholding and tax form status
Operation getPartnerCompliance. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/partner/compliance' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /partner/kyc/documents
Partner: my KYC documents
Operation getPartnerKycDocuments. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/partner/kyc/documents' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /partner/kyc/documents
Partner: upload a KYC document (multipart: doc_type, file PDF/PNG/JPEG max 10 MB)
Operation postPartnerKycDocuments. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): any
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json KYCDocument |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/partner/kyc/documents' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 201 response:
{}
GET /partner/payment-methods
Partner: my payment methods
Operation getPartnerPaymentMethods. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/partner/payment-methods' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /partner/payment-methods
Partner: add payment method
Operation postPartnerPaymentMethods. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): PaymentMethodCreate
| Field | Type | Flags | Description |
|---|---|---|---|
partner_id | string | required | |
type | enum: paypal, payoneer, tipalti, wise, stripe, crypto, sepa, ach, india_bank, wire, manual | required | |
currency | string | ||
label | string | ||
details | object (free-form) | type-specific, write-only: paypal email | payoneer/tipalti payee_id | wise recipient_id | stripe account_id | crypto address+network | sepa iban(+bic) | ach routing+account | india_bank account+ifsc | |
is_default | boolean |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json PaymentMethod |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/partner/payment-methods' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"partner_id":"","type":"paypal"}'
Example 201 response:
{
"external_ref": ""
}
GET /partner/statements
Partner statements
Operation getPartnerStatements. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/partner/statements?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
GET /partner/tax-forms
Partner: my tax forms
Operation getPartnerTaxForms. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/partner/tax-forms' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /partner/tax-forms
Partner: upload W-9/W-8 (multipart)
Operation postPartnerTaxForms. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/partner/tax-forms' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 201 response:
{
"external_ref": ""
}
POST /payout-webhooks/{tenant}/{provider}
Payout provider webhook (signature-verified)
Operation postPayoutWebhooksTenantProvider. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
tenant | path | string | yes | |
provider | path | string | yes |
Request body (application/json, required): Ok
| Field | Type | Flags | Description |
|---|---|---|---|
ok | boolean |
curl -X POST 'https://api.metrixed.com/v1/payout-webhooks/<tenant>/<provider>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ok":false}'
Example 200 response:
{
"ok": false
}
GET /revshare-runs
List RevshareRuns
Operation getRevshareRuns. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json RevshareRunList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/revshare-runs?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /revshare-runs
Create RevshareRun
Operation postRevshareRuns. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): RevshareRunCreate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
advertiser_id | string | ||
offer_id | string | ||
period_from | string (date) | ||
period_to | string (date) | ||
currency | string | ||
rows | array of object (free-form) | ||
payout_percent | string | decimal string | |
stats | object (free-form) |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json RevshareRun |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/revshare-runs' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","advertiser_id":"","offer_id":"","period_from":""}'
Example 201 response:
{
"external_ref": ""
}
GET /revshare-runs/{id}
Get RevshareRun
Operation getRevshareRunsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json RevshareRun |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/revshare-runs/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /revshare-runs/{id}
Update RevshareRun
Operation patchRevshareRunsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): RevshareRunUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
advertiser_id | string | ||
offer_id | string | ||
period_from | string (date) | ||
period_to | string (date) | ||
currency | string | ||
rows | array of object (free-form) | ||
payout_percent | string | decimal string | |
stats | object (free-form) |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json RevshareRun |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/revshare-runs/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","advertiser_id":"","offer_id":"","period_from":""}'
Example 200 response:
{
"external_ref": ""
}
DELETE /revshare-runs/{id}
Delete RevshareRun
Operation deleteRevshareRunsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/revshare-runs/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /revshare-runs/{id}/execute
Execute a pending revshare run now
Operation postRevshareRunsIdExecute. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json RevshareRun |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/revshare-runs/<id>/execute' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
GET /revshare-runs/{id}/items
Restated conversions of a run
Operation getRevshareRunsIdItems. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
curl 'https://api.metrixed.com/v1/revshare-runs/<id>/items?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
POST /revshare-runs/bulk/apply
Bulk edit apply
Operation postRevshareRunsBulkApply. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/revshare-runs/bulk/apply' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /revshare-runs/bulk/preview
Bulk edit preview
Operation postRevshareRunsBulkPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/revshare-runs/bulk/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /revshare-runs/search
Search RevshareRuns (advanced)
Operation postRevshareRunsSearch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): SearchRequest
| Field | Type | Flags | Description |
|---|---|---|---|
filters | array of object | ||
search | string | ||
sort | array of object (free-form) | ||
page | integer | ||
page_size | integer | ||
include | array of string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json RevshareRunList |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/revshare-runs/search' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"filters":[{}],"search":"","sort":[{}],"page":0}'
Example 200 response:
{
"data": [
{}
],
"page": {}
}