Beta » Wallets track balances in tokens, credits, or dollars, automatically as they are used.Learn more
New » Metering turns raw usage events into billable quantities on a subscription.Learn more
/

Read Data-Quality Issues with the API

Applies to: Maxio Core

··

Last updated on Oct 16, 2026

Call the data-quality issues API to check your Maxio Core account for out-of-balance records and other data problems from a script, a monitoring job or a reporting tool. It runs the checks behind the alerts on the Revenue screen, plus several others, and returns, for each check, how many records it flags and the IDs of a few of them. It is read-only and changes nothing in your account.

Call the endpoint

The endpoint takes no required parameters:

GET /api/v1.0/data_quality/issues/

A successful call returns the date the checks apply to, the moment they ran, and one entry per check:

json
{
  "as_of": "2026-10-15",
  "evaluated_at": "2026-10-15T14:02:11.120000",
  "issues": [
    {
      "detector": "out_of_balance_transactions",
      "label": "Transactions whose invoiced, scheduled revenue and booked amounts disagree",
      "severity": "balance",
      "object_type": "transaction",
      "count": 3,
      "sample_ids": [101, 117, 240]
    }
  ]
}

Every check is listed on every call, including checks that find nothing, so you can compare one call with the next. The endpoint is listed under Data Quality in your API documentation.

Parameters

The endpoint accepts one optional query parameter:

ParameterRequiredNotes
as_ofNoA date in YYYY-MM-DD format. The checks read your account's current data, so the only accepted value is today's date. Omit it to use today.

The call returns a 400 when as_of is badly formed or is any date other than today; the error message names the date the server treats as today. The checks cannot look back in time, so the endpoint refuses a past date rather than returning today's results labeled with it. Reading requires at least the Report User role in Maxio Core. A user without it gets a 403.

The API add-on must also be enabled for your account. Without it, a call made with a user's API token is rejected with the message "API is not enabled in this account."

What each field in the response means

Each entry in issues describes one check:

  • detector is the check's stable name, listed in the table below. Use it, not label, when your own code needs to recognize a check.
  • label is a short, human-readable description of what the check looks for.
  • severity is balance, warning or info, the same levels the application uses for these checks.
  • object_type is the kind of record the check flags: customer, contract, transaction, invoice, invoice_line_item, item or payment.
  • count is the number of records the check flags. It is 0 when the check finds nothing.
  • sample_ids holds the IDs of up to 10 flagged records, lowest ID first. It is empty when count is 0.

Entries are ordered most severe first, balance then warning then info, and alphabetically by detector within each severity.

Checks the endpoint runs

The endpoint runs these 15 checks:

DetectorSeverityFlags
out_of_balance_customersbalanceCustomers that are out of balance.
out_of_balance_contractsbalanceContracts that are out of balance.
out_of_balance_transactionsbalanceTransactions whose invoiced, scheduled revenue and booked amounts disagree.
home_out_of_balance_transactionsbalanceTransactions that are in balance in their local currency but out of balance in your home currency.
transactions_not_recognizing_revenuewarningTransactions with revenue recognition turned off.
invoice_lines_without_transactionwarningInvoice line items that are not associated with a transaction. Zero-amount lines and lines marked as not needing a transaction are left out.
invoice_line_transaction_item_mismatchwarningInvoice line items whose item differs from their transaction's item, unless the transaction has Permit Different Invoice Item turned on.
invoice_line_transaction_contract_mismatchwarningInvoice line items whose contract differs from their transaction's contract, when both belong to the same customer.
invoice_line_transaction_customer_mismatchwarningInvoice line items whose customer differs from their transaction's customer.
invoice_line_transaction_fx_rate_mismatchwarningInvoice line items whose invoice uses a different FX rate from their transaction.
invoices_without_line_itemswarningInvoices that have no line items.
items_with_incomplete_account_settingswarningItems used on a transaction or an invoice line item that are missing an account they need. The Revenue screen counts every item that is missing an account, so its count can be higher.
items_with_incorrect_rev_recwarningItems created from metered or event-based components that use a revenue recognition method other than All on Start date.
items_needing_recurrence_type_reviewinfoRecurring items with no Recurrence Type set yet.
payments_with_unapplied_linesinfoPayments with amounts not yet applied.

Some checks depend on how your account is set up:

  • The out-of-balance checks for customers, contracts and transactions, including the home-currency check, leave out records that have incomplete projects.
  • out_of_balance_transactions and home_out_of_balance_transactions always return 0 when Permit Imbalance Checks Only at Contract Level is turned on in your revenue recognition settings, because imbalance is then checked at the contract level only.
  • items_with_incorrect_rev_rec always returns 0 unless Accruals Enabled is turned on for your account.
  • items_needing_recurrence_type_review always returns 0 unless the Recurrence Type field is available on items in your account.

What this endpoint does not do

It does not return the flagged records themselves, only their count and up to 10 IDs per check. To read a flagged record, look it up by ID through the endpoint for its object type. Invoice line items are read through their invoice, and the response does not include the invoice's ID. It does not keep a history of earlier results, so to track how the counts change over time, call it on a schedule and store the responses yourself. To work through the flagged records in the application, use the Revenue screen.

To find and fix these issues in the application, see Review and Resolve Revenue Issues.

To learn what makes a customer, contract or transaction out of balance and how to correct it, see How to Identify and Correct Out-of-Balance Conditions.

To find your full API documentation and check whether the API add-on is enabled for your account, see Get Started with the Maxio Core API.

Still need help?
Reach out and our support team will take it from here.

Contact support