Skip to main content
Deprecated

The Reports API and its guides are deprecated and may be removed in a future release. Contact your Otter representative for migration options.

Reports

Generate operational reports for orders, items, payouts, and reviews — with webhook delivery or polling.

Overview

Request CSV reports for a date range and filters. Both start and end are inclusive UTC calendar dates. Otter returns a new jobId for every generate request, including repeated requests with identical parameters. You either wait for a Report generated (reports.report_generated) webhook or poll until the file is ready. The webhook is best-effort; retain the jobId and use polling to reconcile a missed notification.

Report types

TypeUse
ORDER_STORESOrder-level detail for stores / org
ORDER_ITEMSLine-item detail
PAYOUT_TRANSACTIONSPayout transactions
RATINGS_AND_REVIEWSRatings and reviews

Report column definitions live in the API reference (request/response schemas for POST /v1/reports/generate and downloaded file formats) — not duplicated here.

Downloads are comma-delimited UTF-8 CSV. Row ordering is report-specific and must not be assumed unless the report definition states it. Treat empty CSV fields as missing values.

Download a READY report promptly. Otter returns EXPIRED and removes the URL two days after workflow completion; an expired result requires a new report request.

Integration overview

  1. POST /v1/reports/generate with type, date range, and filters → a new jobId. Success means the asynchronous workflow started, not that the report is ready.
  2. With webhook: Report with a notification.
  3. Without webhook: Report without a notification.
  4. GET /v1/reports/{jobId} for status and download URL when polling.

Next

Choose webhook vs polling flow and test one report type.