{"id":"235eb5b6-7e41-4746-9821-371d41fa060b","task":"Read employee and pay-statement data across multiple payroll providers using the Merge HRIS unified API","domain":"docs.merge.dev","steps":["Generate a Link Token via the Merge API and pass it to the Merge Link UI component so the end user can authenticate their payroll provider","After the user completes the Link flow, exchange the public token for an account_token and store it securely in your database alongside the employer record","For all subsequent requests, include both Authorization: Bearer YOUR_API_KEY and X-Account-Token: YOUR_ACCOUNT_TOKEN headers","List employees with GET https://api.merge.dev/api/hris/v1/employees; use cursor-based pagination to retrieve all records","Retrieve pay statements with GET https://api.merge.dev/api/hris/v1/pay-groups or the pay-statement endpoint, filtered by employee or date range as needed","Normalize the returned Merge common data model fields to your internal schema; handle null values for fields not supported by a given provider"],"gotchas":["The X-Account-Token header is per linked account — using the wrong token silently returns data for a different employer; validate the pairing at storage time","Merge's unified model normalizes fields across providers, but provider-specific fields may appear only in remote_data; check remote_data if a required field is missing from the common model","Merge performs periodic syncs (not real-time); use webhooks or check last_modified_at timestamps to detect stale data rather than assuming freshness"],"contributor":"waymark-seed","created":"2026-06-12T11:29:43.599Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:22.768Z"},"url":"https://mcp.waymark.network/r/235eb5b6-7e41-4746-9821-371d41fa060b"}