---
title: "Close a month into a signed outcome statement (platform)"
method: POST
path: "/v1/outcomes/agreements/{agreementId}/statements"
---

# Close a month into a signed outcome statement (platform)

`POST /v1/outcomes/agreements/{agreementId}/statements`

## Request

- Base URL: `https://api.decionis.com`
- URL: `https://api.decionis.com/v1/outcomes/agreements/{agreementId}/statements`
- Auth: HTTP bearer

Platform credential only; the worker closes due months daily. Refuses a period whose close-out days have not passed (409 outcome_period_open). Classifies the latest evidence revision of every subject with the agreement's calculator: PREVENTED only when a person confirmed the problem and the action was never paid; held-unconfirmed amounts are exposure, shadow estimates are never summed with realized results, and changes to earlier months are appended as corrections. Net benefit is null when any currency is unconverted. Signs the statement (decionis.outcomes.statement/1) or labels it unsigned, and sends finance and auditor recipients an informational card (email only notifies). Closing a closed month returns the statement signed the first time (200).

## Request body

- object
  - `period` string, required

## Response `200`

The statement already closed for the month.

- SignedOutcomeStatement
  - `artifact` object, required
    - `version` 'decionis.outcomes.statement/1', required
    - `statement_id` string, uuid, required
    - `agreement_id` string, uuid, required
    - `agreement_sha256` string, required
    - `org_id` string, uuid, required
    - `environment` 'sandbox' | 'production', required
    - `period` string, required
    - `window` object, required
      - `from` string, date-time, required
      - `to` string, date-time, required
    - `closed_at` string, date-time, required
    - `calculator` object, required
      - `version` string, required
    - `totals` object[], required
      - `currency` string, required
      - `scale` integer, required
      - `governed_minor` integer, required
      - `prevented_minor` integer, required
      - `held_unconfirmed_minor` integer, required
      - `false_hold_minor` integer, required
      - `pending_minor` integer, required
      - `coverage_gap_minor` integer, required
    - `reporting` object, required
      - `currency` string, required
      - `scale` integer, required
      - `prevented_minor` integer, required
      - `corrections_minor` integer, required
      - `deductions` object, required
        - `false_holds_minor` integer, required
        - `delay_minor` integer, required
        - `analyst_minor` integer, required
        - `total_minor` integer, required
      - `net_benefit_minor` integer, nullable, required
      - `unconverted_currencies` string[], required
    - `counts` object, required
      - `evaluated` integer, required
      - `governed` integer, required
      - `prevented` integer, required
      - `held_unconfirmed` integer, required
      - `false_holds` integer, required
      - `pending` integer, required
      - `coverage_gaps` integer, required
      - `estimates` integer, required
      - `excluded` integer, required
      - `disputed` integer, required
    - `estimates` object[], required
      - `currency` string, required
      - `scale` integer, required
      - `would_hold_minor` integer, required
      - `count` integer, required
    - `corrections` object[], required
      - `subject_digest` string, required
      - `original_period` string, required
      - `from` 'GOVERNED' | 'PREVENTED' | 'HELD_UNCONFIRMED' | 'FALSE_HOLD' | 'PENDING' | 'COVERAGE_GAP' | 'ESTIMATE' | 'EXCLUDED' | 'DISPUTED', required
      - `to` 'GOVERNED' | 'PREVENTED' | 'HELD_UNCONFIRMED' | 'FALSE_HOLD' | 'PENDING' | 'COVERAGE_GAP' | 'ESTIMATE' | 'EXCLUDED' | 'DISPUTED', required
      - `currency` string, required
      - `scale` integer, required
      - `prevented_delta_minor` integer, required
    - `process_map` object[], required
      - `platform` string, required
      - `action_type` string, required
      - `total` integer, required
      - `governed` integer, required
      - `held` integer, required
      - `desk_reviews` integer, required
      - `customer_reviews` integer, required
      - `median_cycle_minutes` integer, nullable, required
      - `p90_cycle_minutes` integer, nullable, required
    - `narrative` string[], required
    - `entries` object, required
      - `count` integer, required
      - `sha256` string, required
  - `artifact_sha256` string, required
  - `canonicalization` 'RFC8785/JCS', required
  - `verification` 'signed' | 'unsigned', required
  - `signature` object, nullable, required
    - `algorithm` 'Ed25519', required
    - `keyId` string, required
    - `value` string, required
  - `public_jwks_path` '/.well-known/decision-dossier-jwks.json', required

## Other responses

- `201`: The statement for the month.
- `400`: Structured API error
- `401`: Structured API error
- `404`: Structured API error
- `409`: Structured API error
- `503`: Structured API error

---

[API](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api.md) · [All operations](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/revisions/357f5e459d0c?raw)
