Skip to content
Docs

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

MethodPathSummary
GET/advertiser/invoice-statusAdvertiser: invoices with paid/outstanding/pay link
GET/advertiser/invoicesAdvertiser invoices
POST/advertiser/topupsAdvertiser portal: request a prepaid top-up (the network confirms the payment and books it)
GET/advertisers/{id}/walletAn advertiser's prepaid wallet
PUT/advertisers/{id}/walletTurn 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/ledgerCredits and draws on the advertiser's prepaid account (paged)
POST/advertisers/{id}/wallet/topupsTop 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}/cancelCancel a pending top-up
POST/advertisers/{id}/wallet/topups/{tid}/confirmBook 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-exportsAccounting export history
POST/billing/accounting-exportsExport to QuickBooks/Xero/NetSuite/Tally
GET/billing/advertiser-invoicesList advertiser invoices
POST/billing/advertiser-invoicesGenerate 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-linkSet invoice payment link
POST/billing/advertiser-invoices/{id}/paymentsRecord a (partial) invoice payment
GET/billing/advertiser-invoices/searchSearch advertiser invoices with advertiser names, paid and outstanding amounts
GET/billing/dunning/logDunning log
GET/billing/dunning/previewPreview the next dunning pass
GET/billing/dunning/scheduleDunning schedule
PUT/billing/dunning/scheduleSet dunning schedule
GET/billing/fx-ratesFX rates
PUT/billing/fx-ratesOverride FX rate
GET/billing/invoice-statusInvoices with paid/outstanding/pay link
GET/billing/kycPartner KYC status
PUT/billing/kyc/{partner_id}Manual KYC override
GET/billing/kyc/{partner_id}/documentsA partner's KYC documents
POST/billing/kyc/{partner_id}/documentsAttach 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}/fileDownload a KYC document; ?inline=1 serves it for in-page viewing (sandboxed)
POST/billing/kyc/documents/{id}/reviewAccept or reject a KYC document (note required to reject; manage_billing)
GET/billing/payment-methodsList partner payment methods
POST/billing/payment-methodsAdd partner payment method
DELETE/billing/payment-methods/{id}Delete payment method
POST/billing/payment-methods/{id}/defaultMake this payment method the partner's default (others are unset)
GET/billing/payout-providersList configured payout providers
PUT/billing/payout-providers/{provider}Configure payout provider (secrets sealed)
GET/billing/payout-rails/eligibleStatements eligible for payout, with blockers
GET/billing/payout-rails/runsList payout runs with execution state
POST/billing/payout-rails/runsCreate payout run from eligible statements (maker)
POST/billing/payout-rails/runs/{id}/approveApprove payout run (checker, manage_billing)
GET/billing/payout-rails/runs/{id}/bank-fileDownload SEPA pain.001 / NACHA / India CSV
GET/billing/payout-rails/runs/{id}/itemsPer-item payout status
POST/billing/payout-rails/runs/{id}/mark-paidSettle bank-file items after the bank executed them
POST/billing/payout-rails/runs/{id}/rejectReject payout run
POST/billing/payout-rails/runs/{id}/requeueRequeue failed items
GET/billing/payout-runsList payout runs
POST/billing/payout-runsCreate payout run from unpaid statements (one currency)
POST/billing/payout-runs/{id}/approveApprove payout run
POST/billing/sanctions/loadLoad sanctions list (CSV)
GET/billing/statementsList statements
POST/billing/statementsGenerate statements
GET/billing/statements/{id}Get statement
PATCH/billing/statements/{id}Update statement status
POST/billing/statements/generateGenerate statements for every eligible partner (or partner_ids[]) for a period; partners with nothing to bill are skipped
GET/billing/statements/searchSearch 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/summaryMoney position per currency: unbilled earnings, payables, receivables, aging buckets, monthly billed vs paid, payout runs needing attention
GET/billing/tax-exports1099-NEC / DAC7 export history
POST/billing/tax-exportsGenerate 1099-NEC (CSV) or DAC7 (XML)
GET/billing/tax-formsTax forms awaiting review
POST/billing/tax-forms/{id}/reviewVerify or reject a tax form
POST/billing/tax-ids/validateValidate VAT/HMRC/GSTIN (format, checksum, optional registry)
GET/billing/walletsEvery advertiser prepaid wallet with balance, threshold, state, spend over 7 days and offers paused by the wallet
GET/partner/billingPartner billing profile
PUT/partner/billingUpdate billing/payment method
GET/partner/compliancePartner: KYC, withholding and tax form status
GET/partner/kyc/documentsPartner: my KYC documents
POST/partner/kyc/documentsPartner: upload a KYC document (multipart: doc_type, file PDF/PNG/JPEG max 10 MB)
GET/partner/payment-methodsPartner: my payment methods
POST/partner/payment-methodsPartner: add payment method
GET/partner/statementsPartner statements
GET/partner/tax-formsPartner: my tax forms
POST/partner/tax-formsPartner: upload W-9/W-8 (multipart)
POST/payout-webhooks/{tenant}/{provider}Payout provider webhook (signature-verified)
GET/revshare-runsList RevshareRuns
POST/revshare-runsCreate RevshareRun
GET/revshare-runs/{id}Get RevshareRun
PATCH/revshare-runs/{id}Update RevshareRun
DELETE/revshare-runs/{id}Delete RevshareRun
POST/revshare-runs/{id}/executeExecute a pending revshare run now
GET/revshare-runs/{id}/itemsRestated conversions of a run
POST/revshare-runs/bulk/applyBulk edit apply
POST/revshare-runs/bulk/previewBulk edit preview
POST/revshare-runs/searchSearch 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.

ParameterInTypeRequiredDescription
qquerystringno
pagequerystringno
page_sizequerystringno
sortquerystringno
statequerystringno
pay_statequerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "rows": [
    {}
  ],
  "next_cursor": "",
  "has_more": false
}

GET /advertiser/invoices

Advertiser invoices

Operation getAdvertiserInvoices. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

StatusDescriptionBody
201okapplication/json PortalDoc
defaulterrorapplication/json Error
bash
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:

json
{}

GET /advertisers/{id}/wallet

An advertiser's prepaid wallet

Operation getAdvertisersIdWallet. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json AdvertiserWallet
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/advertisers/<id>/wallet' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): AdvertiserWalletUpdate

FieldTypeFlagsDescription
enabledboolean
currencystring
low_balance_thresholdstringdecimal string
auto_pauseboolean
pause_atstringdecimal string
StatusDescriptionBody
200okapplication/json AdvertiserWallet
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json WalletLedger
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): WalletTopupRequest

FieldTypeFlagsDescription
amountstringrequireddecimal string
currencystring
methodenum: manual, invoice
referencestring
railstring
notestring
due_daysinteger
StatusDescriptionBody
201okapplication/json WalletTopupCreated
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
tidpathstringyes
StatusDescriptionBody
200okapplication/json AdvertiserWallet
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
tidpathstringyes
StatusDescriptionBody
200okapplication/json AdvertiserWallet
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
qquerystringno
pagequerystringno
page_sizequerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
201okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /billing/advertiser-invoices

List advertiser invoices

Operation getBillingAdvertiserInvoices. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
advertiser_idstringrequired
period_fromstring (date)required
period_tostring (date)required
currencystring
net_termsinteger
StatusDescriptionBody
201okapplication/json AdvertiserInvoice
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
includequerystringno
StatusDescriptionBody
200okapplication/json AdvertiserInvoiceDetail
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/advertiser-invoices/<id>' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{}

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.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): AdvertiserInvoicePatch

StatusDescriptionBody
200okapplication/json AdvertiserInvoiceDetail
defaulterrorapplication/json Error
bash
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:

json
{}

Set invoice payment link

Operation putBillingAdvertiserInvoicesIdPaymentLink. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): Ok

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

POST /billing/advertiser-invoices/{id}/payments

Record a (partial) invoice payment

Operation postBillingAdvertiserInvoicesIdPayments. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): Ok

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
201okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
qquerystringno
statusquerystringno
currencyquerystringno
advertiser_idquerystringno
overduequerystringno
sortquerystringno
pagequerystringno
page_sizequerystringno
StatusDescriptionBody
200okapplication/json InvoiceSearchResult
defaulterrorapplication/json Error
bash
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:

json
{}

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.

ParameterInTypeRequiredDescription
qquerystringno
pagequerystringno
page_sizequerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "rows": [
    {}
  ],
  "next_cursor": "",
  "has_more": false
}

GET /billing/dunning/preview

Preview the next dunning pass

Operation getBillingDunningPreview. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/dunning/preview' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "rows": [
    {}
  ],
  "next_cursor": "",
  "has_more": false
}

GET /billing/dunning/schedule

Dunning schedule

Operation getBillingDunningSchedule. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/dunning/schedule' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "ok": false
}

PUT /billing/dunning/schedule

Set dunning schedule

Operation putBillingDunningSchedule. Auth: API key (Bearer) or session cookie.

Request body (application/json, required): Ok

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /billing/fx-rates

FX rates

Operation getBillingFxRates. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
basestring
quotestring
ratestringdecimal string
sourcestring
rate_datestring (date)
StatusDescriptionBody
200okapplication/json FxRate
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
qquerystringno
pagequerystringno
page_sizequerystringno
sortquerystringno
advertiser_idquerystringno
statequerystringno
pay_statequerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
statusquerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "rows": [
    {}
  ],
  "next_cursor": "",
  "has_more": false
}

PUT /billing/kyc/{partner_id}

Manual KYC override

Operation putBillingKycPartnerId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
partner_idpathstringyes

Request body (application/json, required): Ok

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /billing/kyc/{partner_id}/documents

A partner's KYC documents

Operation getBillingKycPartnerIdDocuments. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
partner_idpathstringyes
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/kyc/<partner_id>/documents' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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.

ParameterInTypeRequiredDescription
partner_idpathstringyes

Request body (application/json, required): any

StatusDescriptionBody
201okapplication/json KYCDocument
defaulterrorapplication/json Error
bash
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:

json
{}

DELETE /billing/kyc/documents/{id}

Remove a KYC document (manage_billing)

Operation deleteBillingKycDocumentsId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
204okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
inlinequerystringno
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/kyc/documents/<id>/file' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): KYCDocumentReview

StatusDescriptionBody
200okapplication/json KYCDocument
defaulterrorapplication/json Error
bash
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:

json
{}

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.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
partner_idquerystringno
typequerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
partner_idstringrequired
typeenum: paypal, payoneer, tipalti, wise, stripe, crypto, sepa, ach, india_bank, wire, manualrequired
currencystring
labelstring
detailsobject (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_defaultboolean
StatusDescriptionBody
201okapplication/json PaymentMethod
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

DELETE /billing/payment-methods/{id}

Delete payment method

Operation deleteBillingPaymentMethodsId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
204okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json PaymentMethodDefault
defaulterrorapplication/json Error
bash
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:

json
{}

GET /billing/payout-providers

List configured payout providers

Operation getBillingPayoutProviders. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/payout-providers' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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.

ParameterInTypeRequiredDescription
providerpathstringyes

Request body (application/json, required): Ok

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /billing/payout-rails/eligible

Statements eligible for payout, with blockers

Operation getBillingPayoutRailsEligible. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/payout-rails/eligible' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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.

ParameterInTypeRequiredDescription
qquerystringno
pagequerystringno
page_sizequerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
201okapplication/json PayoutRun
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

POST /billing/payout-rails/runs/{id}/approve

Approve payout run (checker, manage_billing)

Operation postBillingPayoutRailsRunsIdApprove. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json PayoutRun
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /billing/payout-rails/runs/{id}/items

Per-item payout status

Operation getBillingPayoutRailsRunsIdItems. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

POST /billing/payout-rails/runs/{id}/reject

Reject payout run

Operation postBillingPayoutRailsRunsIdReject. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json PayoutRun
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

POST /billing/payout-rails/runs/{id}/requeue

Requeue failed items

Operation postBillingPayoutRailsRunsIdRequeue. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /billing/payout-runs

List payout runs

Operation getBillingPayoutRuns. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
statement_idsarray of stringrequired
railstringdefault wire
namestring
currencystring
StatusDescriptionBody
201okapplication/json PayoutRun
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

POST /billing/payout-runs/{id}/approve

Approve payout run

Operation postBillingPayoutRunsIdApprove. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json PayoutRun
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /billing/statements

List statements

Operation getBillingStatements. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
idstringread-only
display_idintegerread-only
hash_idstringread-only
external_refstring
custom_fieldsobject (free-form)tenant-defined fields
versionintegerread-only
created_atstring (date-time)read-only
updated_atstring (date-time)read-only
deleted_atstring (date-time)read-only
partner_idstring
numberstring
period_fromstring (date)
period_tostring (date)
currencystring
subtotalstringdecimal string
taxstringdecimal string
tax_rulestring
withholdingstringdecimal string
totalstringdecimal string
statusenum: draft, approved, sent, partially_paid, paid, void
payment_statusenum: not_initiated, in_progress, complete, failed
due_onstring (date)
linesarray of object (free-form)
adjustmentsarray of object (free-form)
paid_atstring (date-time)
pdf_refstring
StatusDescriptionBody
202okapplication/json Job
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

GET /billing/statements/{id}

Get statement

Operation getBillingStatementsId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json Statement
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/statements/<id>' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "external_ref": ""
}

PATCH /billing/statements/{id}

Update statement status

Operation patchBillingStatementsId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): Statement

FieldTypeFlagsDescription
idstringread-only
display_idintegerread-only
hash_idstringread-only
external_refstring
custom_fieldsobject (free-form)tenant-defined fields
versionintegerread-only
created_atstring (date-time)read-only
updated_atstring (date-time)read-only
deleted_atstring (date-time)read-only
partner_idstring
numberstring
period_fromstring (date)
period_tostring (date)
currencystring
subtotalstringdecimal string
taxstringdecimal string
tax_rulestring
withholdingstringdecimal string
totalstringdecimal string
statusenum: draft, approved, sent, partially_paid, paid, void
payment_statusenum: not_initiated, in_progress, complete, failed
due_onstring (date)
linesarray of object (free-form)
adjustmentsarray of object (free-form)
paid_atstring (date-time)
pdf_refstring
StatusDescriptionBody
200okapplication/json Statement
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
period_fromstring (date)required
period_tostring (date)required
partner_idsarray of string
partner_idstring
currencystring
net_termsinteger
thresholdstringmoney; partners below it are skipped
basisstring
StatusDescriptionBody
201okapplication/json StatementGenerateResult
defaulterrorapplication/json Error
bash
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:

json
{}

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.

ParameterInTypeRequiredDescription
qquerystringno
statusquerystringno
payment_statusquerystringno
currencyquerystringno
partner_idquerystringno
fromquerystringno
toquerystringno
overduequerystringno
sortquerystringno
pagequerystringno
page_sizequerystringno
StatusDescriptionBody
200okapplication/json StatementSearchResult
defaulterrorapplication/json Error
bash
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:

json
{}

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.

StatusDescriptionBody
200okapplication/json BillingSummary
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/summary' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{}

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.

ParameterInTypeRequiredDescription
qquerystringno
pagequerystringno
page_sizequerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
201okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
statusquerystringno
partner_idquerystringno
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): Ok

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json TaxForm
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "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.

StatusDescriptionBody
200okapplication/json AdvertiserWalletList
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/billing/wallets' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "data": [
    {}
  ],
  "total": 0
}

GET /partner/billing

Partner billing profile

Operation getPartnerBilling. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json Partner
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/partner/billing' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "external_ref": ""
}

PUT /partner/billing

Update billing/payment method

Operation putPartnerBilling. Auth: API key (Bearer) or session cookie.

Request body (application/json, required): PartnerUpdate

FieldTypeFlagsDescription
namestring
companystring
usernamestring
statusenum: active, pending, paused, inactive, suspended, rejected, disabled
tagsarray of string
account_manager_idstring
account_executive_idstring
tier_idstring
referrer_partner_idstring
traffic_source_idstring
business_unit_idstring
internal_notesstring
is_demoboolean
contactobject (free-form)email, phone, website, instant_messaging{type,id}, address{...}, region{currency,lang,country}
trackingobject (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_defaultboolean
visibility_overridesobject (free-form)adv1..adv10, sale_amount -> bool
billingobject (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
complianceobject (free-form)accepted_terms_version, accepted_terms_at, kyc_status, risk_score
signup_answersobject (free-form)
StatusDescriptionBody
200okapplication/json Partner
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

GET /partner/compliance

Partner: KYC, withholding and tax form status

Operation getPartnerCompliance. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/partner/compliance' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "ok": false
}

GET /partner/kyc/documents

Partner: my KYC documents

Operation getPartnerKycDocuments. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/partner/kyc/documents' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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

StatusDescriptionBody
201okapplication/json KYCDocument
defaulterrorapplication/json Error
bash
curl -X POST 'https://api.metrixed.com/v1/partner/kyc/documents' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 201 response:

json
{}

GET /partner/payment-methods

Partner: my payment methods

Operation getPartnerPaymentMethods. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/partner/payment-methods' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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

FieldTypeFlagsDescription
partner_idstringrequired
typeenum: paypal, payoneer, tipalti, wise, stripe, crypto, sepa, ach, india_bank, wire, manualrequired
currencystring
labelstring
detailsobject (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_defaultboolean
StatusDescriptionBody
201okapplication/json PaymentMethod
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

GET /partner/statements

Partner statements

Operation getPartnerStatements. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
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:

json
{
  "rows": [
    {}
  ],
  "next_cursor": "",
  "has_more": false
}

GET /partner/tax-forms

Partner: my tax forms

Operation getPartnerTaxForms. Auth: API key (Bearer) or session cookie.

StatusDescriptionBody
200okapplication/json LogSearchResult
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/partner/tax-forms' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "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

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
201okapplication/json TaxForm
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

POST /payout-webhooks/{tenant}/{provider}

Payout provider webhook (signature-verified)

Operation postPayoutWebhooksTenantProvider. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
tenantpathstringyes
providerpathstringyes

Request body (application/json, required): Ok

FieldTypeFlagsDescription
okboolean
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "ok": false
}

GET /revshare-runs

List RevshareRuns

Operation getRevshareRuns. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json RevshareRunList
defaulterrorapplication/json Error
bash
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:

json
{
  "data": [
    {}
  ],
  "page": {}
}

POST /revshare-runs

Create RevshareRun

Operation postRevshareRuns. Auth: API key (Bearer) or session cookie.

Request body (application/json, required): RevshareRunCreate

FieldTypeFlagsDescription
namestring
advertiser_idstring
offer_idstring
period_fromstring (date)
period_tostring (date)
currencystring
rowsarray of object (free-form)
payout_percentstringdecimal string
statsobject (free-form)
StatusDescriptionBody
201okapplication/json RevshareRun
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

GET /revshare-runs/{id}

Get RevshareRun

Operation getRevshareRunsId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json RevshareRun
defaulterrorapplication/json Error
bash
curl 'https://api.metrixed.com/v1/revshare-runs/<id>' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 200 response:

json
{
  "external_ref": ""
}

PATCH /revshare-runs/{id}

Update RevshareRun

Operation patchRevshareRunsId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes

Request body (application/json, required): RevshareRunUpdate

FieldTypeFlagsDescription
namestring
advertiser_idstring
offer_idstring
period_fromstring (date)
period_tostring (date)
currencystring
rowsarray of object (free-form)
payout_percentstringdecimal string
statsobject (free-form)
StatusDescriptionBody
200okapplication/json RevshareRun
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

DELETE /revshare-runs/{id}

Delete RevshareRun

Operation deleteRevshareRunsId. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
204okapplication/json Ok
defaulterrorapplication/json Error
bash
curl -X DELETE 'https://api.metrixed.com/v1/revshare-runs/<id>' \
  -H "Authorization: Bearer $DT_API_KEY" \
  -H 'Accept: application/json'

Example 204 response:

json
{
  "ok": false
}

POST /revshare-runs/{id}/execute

Execute a pending revshare run now

Operation postRevshareRunsIdExecute. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200okapplication/json RevshareRun
defaulterrorapplication/json Error
bash
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:

json
{
  "external_ref": ""
}

GET /revshare-runs/{id}/items

Restated conversions of a run

Operation getRevshareRunsIdItems. Auth: API key (Bearer) or session cookie.

ParameterInTypeRequiredDescription
idpathstringyes
pagequeryintegerno
page_sizequeryintegerno
sortquerystringnofield or -field
includequerystringnocomma-separated relationships
filterqueryobject (free-form)no
qquerystringnofree-text search
StatusDescriptionBody
200okapplication/json Ok
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
idsarray of stringrequired
patchesarray of objectrequired
StatusDescriptionBody
200okapplication/json BulkPreview
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
idsarray of stringrequired
patchesarray of objectrequired
StatusDescriptionBody
200okapplication/json BulkPreview
defaulterrorapplication/json Error
bash
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:

json
{
  "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

FieldTypeFlagsDescription
filtersarray of object
searchstring
sortarray of object (free-form)
pageinteger
page_sizeinteger
includearray of string
StatusDescriptionBody
200okapplication/json RevshareRunList
defaulterrorapplication/json Error
bash
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:

json
{
  "data": [
    {}
  ],
  "page": {}
}