Charges

Retrieve the verification outcome and detector results for a charge

Changed on

Required scope: charge-verification:read </br>Organization authorization: supported

not_run does not mean the charge is clean. Detectors run asynchronously after the charge completes, so a charge that has just finished legitimately reports outcome: "not_run" with zero counts and empty result arrays simply because nothing has been evaluated yet. The same value is returned when verification is disabled for the operator, or when every check turned out not to apply to the charge. Treating it as a pass will approve unverified home-charging reimbursements. Only verified means a check actually ran and passed; poll again later, or wait for the charge to settle, before acting on the verdict.

The roll-up ranks by how much attention is needed: flagged > inconclusive > noted > verified. noted carries findings the operator asked to record but does not have to answer.

get/api/v1/charges/{chargeId}/verification

Request

  • Base URL
    https://partner-api.monta.com
  • URL
    https://partner-api.monta.com/api/v1/charges/{chargeId}/verification
  • Auth
    HTTP bearer

Path parameters

chargeIdinteger required

Response

Verification roll-up and every detector result, grouped by type

outcome'flagged' | 'inconclusive' | 'noted' | 'verified' | 'not_run' | 'unknown' required

Whole-charge verification verdict, ordered by how much attention it demands: flagged > inconclusive > noted > verified. not_run means nothing was evaluated.

flagsinteger required

Number of results that flagged something, resolved ones included

unresolvedFlagsinteger required

Number of flags no operator has resolved yet

inconclusiveinteger required

Number of checks that could not reach a conclusion, typically for missing data

confirmationsinteger required

Number of checks that passed

notApplicableinteger required

Number of checks that did not apply to this charge. These demand no attention and are ignored when deriving outcome.

highestSeverity'info' | 'warn' | 'critical' nullable

Highest severity across every result. Null when there are no results.

Example response

{
  "flags": 1,
  "unresolvedFlags": 1,
  "inconclusive": 1,
  "confirmations": 1,
  "notApplicable": 2,
  "highestSeverity": "critical",
  "results": {
    "flags": [
      {
        "id": 1,
        "resultKey": "odometer.decreased",
        "resultVersion": 1,
        "category": "fraud",
        "severity": "critical",
        "outcome": "negative",
        "outcomeLabel": "Fail",
        "resultType": "flag",
        "headline": "Odometer went backwards",
        "detectedAt": "2026-05-21T12:00:00Z",
        "resolvedAt": "2026-05-22T08:00:00Z",
        "resolutionNote": "Sensor glitch, confirmed by driver"
      }
    ],
    "inconclusive": [
      {
        "id": 1,
        "resultKey": "odometer.decreased",
        "resultVersion": 1,
        "category": "fraud",
        "severity": "critical",
        "outcome": "negative",
        "outcomeLabel": "Fail",
        "resultType": "flag",
        "headline": "Odometer went backwards",
        "detectedAt": "2026-05-21T12:00:00Z",
        "resolvedAt": "2026-05-22T08:00:00Z",
        "resolutionNote": "Sensor glitch, confirmed by driver"
      }
    ],
    "confirmations": [
      {
        "id": 1,
        "resultKey": "odometer.decreased",
        "resultVersion": 1,
        "category": "fraud",
        "severity": "critical",
        "outcome": "negative",
        "outcomeLabel": "Fail",
        "resultType": "flag",
        "headline": "Odometer went backwards",
        "detectedAt": "2026-05-21T12:00:00Z",
        "resolvedAt": "2026-05-22T08:00:00Z",
        "resolutionNote": "Sensor glitch, confirmed by driver"
      }
    ]
  }
}

Changes