[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Attest Quinyx worked hours before payroll

> Attest clean Quinyx punches per employee before the payroll file and list punches with warnings or missing employee approval for review.

Source: https://cotlet.dev/integrations/quinyx-api-mcp-server/attest-worked-hours-before-payroll

Payroll cannot start until every punch is attested, so on the last day of the period a manager goes down the Schedule view row by row, opening punches and ticking boxes.

Cotlet does it in your own Quinyx account with list\_timesheet\_approvals and attest\_hours, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=quinyx) [All Quinyx tools](https://cotlet.dev/integrations/quinyx-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Quinyx do this on its own?

Quinyx lets a manager attest by day, employee or period in the web app. Its API references list no operation to attest hours (checked 22 Oct 2026): v2 covers absences, employees, groups, forecasts and pay schedules, and v3 employees, groups, roles and shifts.

## How you do it in Quinyx today

1. The manager opens the Schedule view, selects the dates of the pay period and, if needed, filters the rows.
2. Quinyx can filter on attest status: Employee missing approval, Manager approval missing, Has employee approval and Has manager approval.
3. Clicking a punch opens the Edit punch dialog. It shows the original start and end next to the edited ones, and a red frame around a punch means it has warnings.
4. For a clean row, the manager clicks the three dots right of the employee's name and chooses Attest all. A green circle appears around the avatar when everything in the period is attested.
5. This repeats per employee every period, and Quinyx will not include an employee in the payroll file while their approval is missing if Transfer only fully approved times is on.

## How to attest Quinyx worked hours before payroll

Prompt

```
For last week at Harbor Cafe, attest the worked hours of employees who already approved their own time and whose punches have no warnings. List everyone else with the reason.
```

1. 01  
### List what is missing  
list\_timesheet\_approvals runs for the pay period with status manager\_approval\_missing. Each row carries the punch, whether the employee and the manager have attested it, and any warnings.
2. 02  
### Keep the order Quinyx wants  
If your organization has Hierarchical approval on, the employee must approve first. Rows where employee\_attested is false are not attested; the employee goes on your list as waiting for their own approval.
3. 03  
### Separate clean from flagged  
An employee with any punch that has a warning, such as an automatic punch-out that still needs a time change, is not attested. The agent names the date and the warning for you.
4. 04  
### Attest the clean rows  
attest\_hours runs once per employee for the period. It attests the punches and absences in that date range, so the agent sends exactly the range it checked. It asks for your OK per employee until you switch confirmation off.
5. 05  
### Hand over the rest  
The report ends with who is left and why. Sending the payroll file stays a step in Quinyx that this job does not touch.

### What you get back

Example data

```
Pay period 12 to 18 Oct, Harbor Cafe: 12 employees
Attested 9 (41 punches, 2 absences)
Waiting for their own approval 2: Tom Becker, Ana Lopez
Warnings on a punch 1: Maria Silva, 15 Oct, automatic punch-out
Payroll file not created
```

### Other ways to ask

- Every Monday at 8, attest last week for employees who approved their time and list the rest.
- Show me only the punches with warnings for this period, and attest nothing.
- Attest today's punches for the morning shift and leave the evening shift for tonight.

## What Quinyx allows, and what to know first

- Time settings sit under Account settings > Agreements > Time settings, apply to the whole account, and work the same for every manager role, including admins.
- With Hierarchical approval on, an employee must approve time before a manager can; with Manager can approve employee off, a manager has no option to attest for employees.
- Attest all affects only the punches and absences that are visible, so the date range and filters decide what gets attested. Attesting future events needs the Approve into future setting.
- With Transfer only fully approved times on, an employee with missing attestation cannot be selected for the payroll file.

attest\_hours asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.

Sources: [Quinyx Help: Attest all / unattest all worked hours](https://help.quinyx.com/help-centre/docs/attest-all-unattest-all-worked-hours) · [Quinyx Help: Time settings](https://help.quinyx.com/help-centre/docs/time-settings) · [Quinyx Developer Portal: API reference](https://developer.quinyx.com/api)

## Call attest\_hours from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/quinyx/groups/1042/hours/attest \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"employee_id":"3011","from":"2026-10-12","to":"2026-10-18"}'
```

Example response

```
{
"employee": "Tom Becker",
"from": "2026-10-12",
"to": "2026-10-18",
"attested": {
"punches": 5,
"absences": 0
},
"manager_attested": true
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is quinyx\_write → attest\_hours. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/quinyx-api-mcp-server.md#automations)

## Quinyx tools this automation uses

__Cotlet Quinyx tools used to attest Quinyx worked hours before payroll__
| Tool | Parameters |
| -------------------------- | ----------------------------------------- |
| list\_timesheet\_approvals | group\_id, from, to, employee\_id, status |
| attest\_hours | group\_id, employee\_id, from, to |

[All 13 Quinyx tools with descriptions](https://cotlet.dev/integrations/quinyx-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Quinyx to Cotlet?

Yes. You sign in to Quinyx yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Quinyx once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Quinyx automations

- [Approve Quinyx absence requests with AI](https://cotlet.dev/integrations/quinyx-api-mcp-server/approve-absence-requests.md)
- [Offer open Quinyx shifts to the right employees](https://cotlet.dev/integrations/quinyx-api-mcp-server/offer-open-shifts.md)
- [Quinyx API and MCP server: every tool](https://cotlet.dev/integrations/quinyx-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Quinyx.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Quinyx.

[Sign up free](https://cotlet.dev/app/signup?app=quinyx)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
