Skip to main content
This task is experimental and belongs to the optional reconciled billing tier: only sellers advertising media_buy.reporting_delivery.reconciled_billing: true implement it, and its presence is declared through receipt_task. Core-tier sellers never implement receipts. Sellers implementing it declare media_buy.reporting_delivery in get_adcp_capabilities.experimental_features.
sync_reporting_receipts closes the knowledge gap between “the seller published a report” and “this consumer independently observed matching data.” It is a batched, idempotent write. It does not acknowledge mere webhook delivery. Request schema: sync-reporting-receipts-request.json Response schema: sync-reporting-receipts-response.json
The authenticated transport identity, not a payload field, identifies the buyer or governance consumer. The seller accepts a receipt only for that principal’s account-bound obligation and materialization. Unknown, unauthorized, cross-account, and cross-caller identifiers return indistinguishable failures. An accepted receipt always carries independently observed row count and control totals. Its selected verification profile adds one of:
  • native_commit: the exact provider-native immutable version;
  • manifest_checksums: the digest-valid manifest whose file checksums were verified; or
  • canonical_digest: the digest of canonical logical content, required for billing.
If evidence differs, consumers submit status: rejected with stable rejection codes. A receipt ID is immutable. Exact retries are unchanged; reuse with different content is an idempotency conflict. Sellers return received_at and expose the durable receipt through get_reporting_status, allowing the consumer to read back that agreement. One canonical revision may fan out to several destinations or principals. Each materialization is reconciled independently, and one consumer’s receipt never counts as another consumer’s acceptance.