---
title: reports.week | Doing Work API
description: How the shop did in one week (Monday to Sunday in the shop's time zone) against the week before: money collected, refunded, paid outside and invoiced; quot
url: https://doingwork.work/docs/reference/reports-week/
---

# reports.week

How the shop did in one week (Monday to Sunday in the shop's time zone) against the week before: money collected, refunded, paid outside and invoiced; quotes sent and signed; jobs, visits, customers and requests; time logged and expenses.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `GET /v1/reports/week` |
| MCP tool | `reports_week` |
| Writes | no |
| Area | [Costs, expenses and reports](https://doingwork.work/docs/reference/#costs-expenses-and-reports) |

## When to use it

How the shop did in one week (Monday to Sunday in the shop's time zone) against the week before: money collected, refunded, paid outside and invoiced; quotes sent and signed; jobs, visits, customers and requests; time logged and expenses.

## What to tell the owner

Tell them what you found in plain words. Don't read back raw fields.

## Input

| Field | Type | Required |
|---|---|---|
| `shop_id` | string (uuid) | yes |
| `week_of` | string | no |

## Example

```http
GET https://doingwork.work/v1/reports/week?shop_id=00000000-0000-4000-8000-000000000000
```

## Output

| Field | Type | Always there |
|---|---|---|
| `from` | string | yes |
| `to` | string | yes |
| `time_zone` | string | yes |
| `currency` | string | yes |
| `this_week` | object | yes |
| `this_week.collected_minor` | integer | yes |
| `this_week.refunded_minor` | integer | yes |
| `this_week.outside_minor` | integer | yes |
| `this_week.invoiced_minor` | integer | yes |
| `this_week.invoices_issued` | integer | yes |
| `this_week.quotes_sent` | integer | yes |
| `this_week.quotes_signed` | integer | yes |
| `this_week.quotes_signed_minor` | integer | yes |
| `this_week.jobs_created` | integer | yes |
| `this_week.jobs_done` | integer | yes |
| `this_week.visits_scheduled` | integer | yes |
| `this_week.visits_done` | integer | yes |
| `this_week.new_customers` | integer | yes |
| `this_week.new_requests` | integer | yes |
| `this_week.minutes_logged` | integer | yes |
| `this_week.expenses_minor` | integer | yes |
| `last_week` | object | yes |
| `last_week.collected_minor` | integer | yes |
| `last_week.refunded_minor` | integer | yes |
| `last_week.outside_minor` | integer | yes |
| `last_week.invoiced_minor` | integer | yes |
| `last_week.invoices_issued` | integer | yes |
| `last_week.quotes_sent` | integer | yes |
| `last_week.quotes_signed` | integer | yes |
| `last_week.quotes_signed_minor` | integer | yes |
| `last_week.jobs_created` | integer | yes |
| `last_week.jobs_done` | integer | yes |
| `last_week.visits_scheduled` | integer | yes |
| `last_week.visits_done` | integer | yes |
| `last_week.new_customers` | integer | yes |
| `last_week.new_requests` | integer | yes |
| `last_week.minutes_logged` | integer | yes |
| `last_week.expenses_minor` | integer | yes |
| `change` | object | yes |
| `change.collected_minor` | integer | yes |
| `change.refunded_minor` | integer | yes |
| `change.outside_minor` | integer | yes |
| `change.invoiced_minor` | integer | yes |
| `change.invoices_issued` | integer | yes |
| `change.quotes_sent` | integer | yes |
| `change.quotes_signed` | integer | yes |
| `change.quotes_signed_minor` | integer | yes |
| `change.jobs_created` | integer | yes |
| `change.jobs_done` | integer | yes |
| `change.visits_scheduled` | integer | yes |
| `change.visits_done` | integer | yes |
| `change.new_customers` | integer | yes |
| `change.new_requests` | integer | yes |
| `change.minutes_logged` | integer | yes |
| `change.expenses_minor` | integer | yes |

```json
{
  "from": "...",
  "to": "...",
  "time_zone": "...",
  "currency": "...",
  "this_week": {
    "collected_minor": 50000,
    "refunded_minor": 50000,
    "outside_minor": 50000,
    "invoiced_minor": 50000,
    "invoices_issued": 1,
    "quotes_sent": 1,
    "quotes_signed": 1,
    "quotes_signed_minor": 50000,
    "jobs_created": 1,
    "jobs_done": 1,
    "visits_scheduled": 1,
    "visits_done": 1,
    "new_customers": 1,
    "new_requests": 1,
    "minutes_logged": 1,
    "expenses_minor": 50000
  },
  "last_week": {
    "collected_minor": 50000,
    "refunded_minor": 50000,
    "outside_minor": 50000,
    "invoiced_minor": 50000,
    "invoices_issued": 1,
    "quotes_sent": 1,
    "quotes_signed": 1,
    "quotes_signed_minor": 50000,
    "jobs_created": 1,
    "jobs_done": 1,
    "visits_scheduled": 1,
    "visits_done": 1,
    "new_customers": 1,
    "new_requests": 1,
    "minutes_logged": 1,
    "expenses_minor": 50000
  },
  "change": {
    "collected_minor": 50000,
    "refunded_minor": 50000,
    "outside_minor": 50000,
    "invoiced_minor": 50000,
    "invoices_issued": 1,
    "quotes_sent": 1,
    "quotes_signed": 1,
    "quotes_signed_minor": 50000,
    "jobs_created": 1,
    "jobs_done": 1,
    "visits_scheduled": 1,
    "visits_done": 1,
    "new_customers": 1,
    "new_requests": 1,
    "minutes_logged": 1,
    "expenses_minor": 50000
  }
}
```

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
