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:
{
"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:
| Parameter | Required | Notes |
|---|---|---|
as_of | No | A 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:
detectoris the check's stable name, listed in the table below. Use it, notlabel, when your own code needs to recognize a check.labelis a short, human-readable description of what the check looks for.severityisbalance,warningorinfo, the same levels the application uses for these checks.object_typeis the kind of record the check flags:customer,contract,transaction,invoice,invoice_line_item,itemorpayment.countis the number of records the check flags. It is0when the check finds nothing.sample_idsholds the IDs of up to 10 flagged records, lowest ID first. It is empty whencountis0.
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:
| Detector | Severity | Flags |
|---|---|---|
out_of_balance_customers | balance | Customers that are out of balance. |
out_of_balance_contracts | balance | Contracts that are out of balance. |
out_of_balance_transactions | balance | Transactions whose invoiced, scheduled revenue and booked amounts disagree. |
home_out_of_balance_transactions | balance | Transactions that are in balance in their local currency but out of balance in your home currency. |
transactions_not_recognizing_revenue | warning | Transactions with revenue recognition turned off. |
invoice_lines_without_transaction | warning | Invoice 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_mismatch | warning | Invoice line items whose item differs from their transaction's item, unless the transaction has Permit Different Invoice Item turned on. |
invoice_line_transaction_contract_mismatch | warning | Invoice line items whose contract differs from their transaction's contract, when both belong to the same customer. |
invoice_line_transaction_customer_mismatch | warning | Invoice line items whose customer differs from their transaction's customer. |
invoice_line_transaction_fx_rate_mismatch | warning | Invoice line items whose invoice uses a different FX rate from their transaction. |
invoices_without_line_items | warning | Invoices that have no line items. |
items_with_incomplete_account_settings | warning | Items 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_rec | warning | Items created from metered or event-based components that use a revenue recognition method other than All on Start date. |
items_needing_recurrence_type_review | info | Recurring items with no Recurrence Type set yet. |
payments_with_unapplied_lines | info | Payments 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_transactionsandhome_out_of_balance_transactionsalways return0when 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_recalways returns0unless Accruals Enabled is turned on for your account.items_needing_recurrence_type_reviewalways returns0unless 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.
Related information
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.
