> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowpayroll.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Sending pension data to NEST

> Connect an employer's NEST account, link a scheme to it, work down the steps that send each pay run's enrolments and contributions, approve the payment separately, and decide what payroll does about what members tell NEST.

Until now, every pay run ended with the same chore: download the NEST enrolment and contribution files, sign in to NEST, upload them, approve the payment, and remember to check NEST for anyone who opted out. Flow Payroll can now do the sending for you, and read back what NEST knows, while leaving every decision in your hands.

<Note>
  **What is supported today.** NEST, for weekly, fortnightly, four-weekly and monthly payrolls. Other providers keep working exactly as before, through the export files. The export files are still produced for NEST schemes too, so the manual route is always there if you want it.
</Note>

## How it works in one paragraph

You connect the employer's NEST account once and link a pension scheme to it. From then on, when you complete a pay run, opening a report in the **Pension reports** card shows the steps that scheme goes through with NEST: enrol any new members, send the contribution schedule, then approve the payment. Each step is its own button with its own status, and each asks you to confirm before anything leaves. NEST's answer, including the schedule reference, shows against the step it belongs to. Separately, Flow Payroll reads opt-outs and stopped contributions back from NEST and puts them in a queue for you to decide on.

Nothing is fully automated. Nothing goes to NEST until you send it, no payment is approved unless you approve it, and nothing NEST reports changes anybody's pay until you apply it.

## Before you start

You need three things from NEST:

* **A NEST sign-in.** The username and password of the employer's own NEST account, or of a delegate account that NEST has given access to the employer.
* **The employer reference.** It starts `EMP` and is on the employer's NEST welcome pack.
* **The payment source name**, as NEST calls it. Once connected, Flow Payroll reads the employer's payment sources from NEST, so you pick one rather than type it.

And two things in Flow Payroll:

* A pension scheme whose provider is **NEST**, with its contribution groups. See [pension defaults](/guides/setup/pension-defaults).
* The scheme's **Employee identifier** set to the field NEST knows your members by. NEST matches members on it, so it has to be the same reference you used when you enrolled them with NEST, whether that is the payroll ID, the employee code or the NI number.

## Connect NEST and link the scheme

<Steps>
  <Step title="Open the scheme">
    Go to **Settings**, open the **Pension** tab, and click **Edit scheme** on the NEST scheme. A **Send to NEST directly** section sits under the provider.
  </Step>

  <Step title="Connect the employer's NEST account">
    Click **Connect NEST** (or **Connect another NEST account** if one is already connected). Enter the NEST username, the password and the employer reference, then click **Connect**.

    Flow Payroll checks the details with NEST straight away and stores them encrypted. If NEST rejects them the dialog says so and nothing is saved; correct the details rather than retrying the same ones, because NEST locks an account after repeated failed sign-ins.
  </Step>

  <Step title="Link the scheme and pick the payment source">
    Choose the connection in the **Send to NEST directly** dropdown. **Payment source** becomes a list of the payment sources NEST holds for the employer; pick the one this scheme's contributions are collected from. If the list says NEST is still preparing them, wait for the time shown and reopen the scheme.

    Click **Update scheme**. The link is the switch: from now on this scheme's reports in the pay run's **Pension reports** card carry the steps that send them. A scheme left as **Not connected (use export files)** carries on exactly as before.

    <Frame caption="A scheme linked to the NEST connection, showing what NEST holds for the employer so you can check your names against it">
      <img className="block dark:hidden" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-scheme-link.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=c103f9b76be3f5bbc807f03503473559" alt="The pension scheme dialog with the NEST connection selected under Send to NEST directly, the Import from NEST button, what NEST holds for this employer listing its worker groups and payment sources, and the When contributions are due field" width="2880" height="1800" data-path="images/screenshots/nest-scheme-link.png" />

      <img className="hidden dark:block" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-scheme-link-dark.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=a35c63bda17ea1af511457d938ae6e13" alt="The pension scheme dialog with the NEST connection selected under Send to NEST directly, the Import from NEST button, what NEST holds for this employer listing its worker groups and payment sources, and the When contributions are due field" width="2880" height="1800" data-path="images/screenshots/nest-scheme-link-dark.png" />
    </Frame>
  </Step>

  <Step title="Import what NEST already holds">
    Click **Import from NEST** in the same section. Flow Payroll reads the employer's groups and payment sources, contribution schedules, opt-outs, stopped contributions and refunds from NEST, so Flow Payroll starts from what NEST already has. It runs in the background. Each type shows its own result as it lands, and while NEST is still preparing one the panel says when it will be asked again, using NEST's own estimate rather than a guess. Progress also shows under **Settings**, **Integrations**.

    Do this before your first send, not after your first refusal. It is what turns **Payment source** from a box you type into a list you choose from, and it is how Flow Payroll learns the date your contribution schedules are due.
  </Step>

  <Step title="Check your names match NEST's">
    Once the import has run, the panel lists **what NEST holds for this employer**: its worker groups and its payment sources. NEST matches these character for character, including capitals, and refuses a whole file if one is off.

    Compare them with your own scheme's groups and payment source, and correct yours if they differ. This one check prevents the most common first-send refusal, and it takes seconds for somebody who knows the NEST setup.
  </Step>

  <Step title="Set a contribution due date, only if you need to">
    Flow Payroll reads the date each schedule is due from NEST's own published schedules, which is almost always right, so **When contributions are due** stays empty.

    Fill it in only if a send is refused because the due date could not be found, which happens when NEST has not published a schedule for the period yet. It is the number of days after the pay period ends that contributions are due, and your NEST setup is what decides it.
  </Step>
</Steps>

<Tip>
  One NEST connection can serve several schemes. Connect once, then link each NEST scheme to it.
</Tip>

## Send a pay run to NEST

<Steps>
  <Step title="Complete the pay run">
    Run the pay run as usual and complete it. Completing a run produces the export files and stops there; nothing is sent yet. The files appear in the **Pension reports** card a few moments after the run completes.
  </Step>

  <Step title="Open the report">
    On the **Reporting & documents** step, the **Pension reports** card lists each NEST report with its status. Click one to open it. The steps for that scheme sit at the top, above the file's own contents, so you can see exactly what will be sent.
  </Step>

  <Step title="Work down the steps in order">
    Each step is a separate call with its own button and its own status:

    1. **Enrol new members.** Introduces people NEST has not seen before. They cannot appear on a schedule until it knows them, so this goes first.
    2. **Send the contribution schedule.** What each member pays this period, and what you owe NEST.
    3. **Approve the payment.** Covered below.

    Every button asks you to confirm first, and the wording changes with what has already happened, so sending again after a refusal never reads the same as sending again after an acceptance.

    Once a step leaves Flow Payroll it carries **two** statuses, because two different things are happening: **Sent**, meaning the file reached NEST and nothing is waiting on us, and **NEST processing**, meaning NEST is working through it at its own pace. Underneath, the step says when NEST expects to be done — in NEST's own words, when it gives an estimate — and how often we are checking, with the exact time of the next check. NEST usually answers in well under a minute, though it is entitled to take longer on a large schedule. The step then becomes **Accepted by NEST** with the schedule reference, or **Not accepted** with NEST's own reasons listed underneath.

    You do not need to refresh, and you can close the pay run and come back: the status changes on its own the moment NEST answers.

    <Frame caption="The steps a report goes through with NEST, each with its own status and button">
      <img className="block dark:hidden" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-pay-run-send.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=52b7d50aaf8a17285e29c52f5b41153a" alt="A pension contribution report opened on a completed pay run, showing numbered steps for sending the contribution schedule and approving the payment, each with its status and button" width="1682" height="752" data-path="images/screenshots/nest-pay-run-send.png" />

      <img className="hidden dark:block" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-pay-run-send-dark.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=7fa85bb3a7c540840c005ff94f322e14" alt="A pension contribution report opened on a completed pay run, showing numbered steps for sending the contribution schedule and approving the payment, each with its status and button" width="1682" height="752" data-path="images/screenshots/nest-pay-run-send-dark.png" />
    </Frame>
  </Step>

  <Step title="Approve the payment">
    Once the contribution schedule is **Accepted by NEST**, the **Approve payment** step becomes available. It shows the amount NEST will collect and asks you to confirm, because this is the step that moves money: nothing is collected until you click it. If you prefer to approve in NEST's own portal, you can; the schedule is already there under the same reference.
  </Step>
</Steps>

<Note>
  **Corrections.** If you unlock a pay run, fix something and complete it again, send the affected step again. Changed figures go to NEST as a new submission, which is how NEST expects corrections to an open schedule.

  Sending a step whose figures have not changed does not send it twice, and the step says so rather than appearing to do nothing: *"This was not sent again: the provider has already accepted this exact submission. Correct the pay run first if something needs to change, then send."* A step that **failed**, for any reason, always sends again when you ask it to — you never have to wonder whether a refusal or a NEST outage left you stuck.
</Note>

### When NEST refuses somebody rather than the file

A refusal about a person is usually a detail that has since been corrected on their record, such as a National Insurance number added after the pay run was locked. You do not have to re-run payroll for that.

The refusal names who it refused, and offers to **re-read those members from their records**. It re-reads only the people NEST named, writes their corrected details onto this pay run, and leaves the step ready to send again. Every amount stays exactly as the locked run calculated it: this corrects who somebody is, never what they were paid.

If the refusal is about the file rather than a person, for example the payment source or the contribution due date not matching a schedule NEST holds, fix it on the scheme and send again.

Every scheme sends separately, and each has its own status, so a scheme that fails does not hold back one that succeeded.

## Keeping up with NEST

Some things happen at NEST, not in payroll: a member opts out, or asks NEST to stop their contributions. Flow Payroll reads these from NEST and puts them in front of you. **It never applies them on its own**, because an opt-out changes what somebody is paid and carries a refund duty, so a person decides.

* **When a pay run is opened**, Flow Payroll makes sure the opt-outs and stopped contributions it holds are no more than six hours old.
* **At the moment a pay run is locked**, it reads them again, so the queue is current at the point the run is finalised.
* **Every day**, whether or not there is a pay run, and after every submission for schedules and refunds.
* **Whenever you ask.** Open the connection under **Settings**, **Integrations** and click **Refresh now** in the **Provider data** section, which also shows when each kind of data was last read and the date it is up to date to.

### Deciding what payroll does about them

Anything NEST reports waits under **Settings**, **Integrations**, **Changes**, with a count on the tab. You will also see the total on a pay run's **Alerts** step, so nobody has to remember to go looking: until a change is applied, that pay run deducts as normal.

Each one offers four choices:

| Choice | When to use it |
| - | - |
| **Apply** | The normal case. Ends the member's pension membership on the date NEST gave, exactly as recording it by hand would. |
| **Handled elsewhere** | Already actioned another way; take it off the list without changing anything. |
| **Does not apply** | Not relevant to this employee. |
| **Delete** | Remove it entirely. |

A change NEST could not match to anybody is shown as such rather than hidden, so you can look into it.

Applying an opt-out ends the membership as opted out; a stopped contribution ends it as ceased instead. Neither puts a refund through payroll: NEST refunds an opted-out member directly, so an automatic payroll refund would pay them twice. The amounts NEST reports as refunded are shown for you to check against payroll.

<Frame caption="Changes NEST has reported, waiting for a decision">
  <img className="block dark:hidden" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-provider-changes.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=3f046b3e1a5084bf0c9005961ed266f6" alt="The Changes tab under Settings, Integrations, listing members NEST reported as opted out or having stopped contributions, each with Apply, Handled elsewhere, Does not apply and Delete buttons" width="2880" height="1800" data-path="images/screenshots/nest-provider-changes.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-provider-changes-dark.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=1ee0d8e397a554a3c8100ffdcfdeb6a9" alt="The Changes tab under Settings, Integrations, listing members NEST reported as opted out or having stopped contributions, each with Apply, Handled elsewhere, Does not apply and Delete buttons" width="2880" height="1800" data-path="images/screenshots/nest-provider-changes-dark.png" />
</Frame>

<Frame caption="The connection's health and the Provider data section, where you can see how fresh each kind of data is and refresh it">
  <img className="block dark:hidden" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-connection.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=4320de540256e904eea9fc4806e89397" alt="The NEST connection panel showing Test connection and Update sign-in details buttons, the pause switch, the health summary, and the Provider data section with its Refresh now button" width="2880" height="1800" data-path="images/screenshots/nest-connection.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-connection-dark.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=56421c202fee6c36fd26fca5f9e6b503" alt="The NEST connection panel showing Test connection and Update sign-in details buttons, the pause switch, the health summary, and the Provider data section with its Refresh now button" width="2880" height="1800" data-path="images/screenshots/nest-connection-dark.png" />
</Frame>

Back on the scheme, a line under the connection says whether the scheme **Matches NEST** or **Needs a look**: how many members are enrolled in Flow Payroll, how many opt-outs and stopped contributions NEST reported and how many were applied, and any NEST could not match to a member. An unmatched entry names someone Flow Payroll could not identify from the reference NEST holds, so nothing was changed for them; check the employee identifier on the scheme and the member's record.

## When something goes wrong

Flow Payroll is built on the assumption that a provider will sometimes be slow, down, or say no, and it keeps going without losing anything.

* **NEST is slow or unavailable.** The submission is retried automatically, five times over roughly eight hours, with the gap between attempts growing each time. The card shows **Sending to NEST…** throughout. Only if the last attempt fails is it marked **Not accepted**, with a **Send again** button.
* **NEST rejects the details.** Some failures are not retried, because retrying cannot help: the sign-in details were rejected, NEST locked the account, or NEST found something wrong in the submission itself. These show as **Not accepted** straight away, with the reason, and **Send again** once the cause is fixed.
* **NEST accepts some workers and not others.** The submission is flagged, never shown as done, so a partially accepted schedule cannot slip through.
* **Repeated failures.** After several failures in a row, sending through the connection pauses for ten minutes and then resumes on its own. If NEST is down for everyone, sending pauses for all connections until it recovers.
* **NEST goes quiet.** If NEST acknowledged a submission but has not returned a result within two days, it is flagged for you to check with NEST, then retry or cancel. Until then it is checked on a widening schedule — seconds apart at first, then minutes — so a fast answer shows up immediately without NEST being hammered on a slow one.
* **Something on our side.** We are alerted whenever a provider stops answering or a submission ends up somewhere only we can fix. Anything you can resolve yourself — a rejected sign-in, a detail NEST would not accept — shows on the screen with what to do about it, and does not page anyone.

Every message you see says what happened and what to do next, for example *"The provider rejected the sign-in details. Re-enter them on the connection, then try again."* or *"The scheme has no payment source. Add one in the scheme settings, then send again."* The full history lives under **Settings**, **Integrations**, **Activity**: every submission and every check of NEST, its status, how many attempts it took, and a **Retry** button on anything that stopped.

<Frame caption="Activity lists every submission and every check of NEST, with its status">
  <img className="block dark:hidden" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-activity.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=aadeec4d4a55a2dc1b43efddaee0e6d1" alt="The Activity view under Settings, Integrations, listing every submission and every check of NEST with its status, attempts and who asked for it, and a Retry button on anything that failed" width="2880" height="1800" data-path="images/screenshots/nest-activity.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-activity-dark.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=55500b2051a7063f7bac78fa666520ad" alt="The Activity view under Settings, Integrations, listing every submission and every check of NEST with its status, attempts and who asked for it, and a Retry button on anything that failed" width="2880" height="1800" data-path="images/screenshots/nest-activity-dark.png" />
</Frame>

<Warning>
  The export files are your fallback. If a submission is **Not accepted** on the day the schedule is due, download the files from the same card and upload them in NEST's portal as you did before. The two routes carry the same figures, and NEST treats a file upload and a direct submission of the same schedule the same way.
</Warning>

## Manage the connection

Go to **Settings**, open the **Integrations** tab, and click **Manage** on the NEST connection.

<Frame caption="Connected providers under Settings, Integrations">
  <img className="block dark:hidden" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-integrations.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=62722070afc02a9998429264bc8517f6" alt="The Integrations tab in organisation settings, showing the NEST connection marked Connected" width="2880" height="1800" data-path="images/screenshots/nest-integrations.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/flowpayroll-1ca487e0/iucTg0uK7vYN2FMG/images/screenshots/nest-integrations-dark.png?fit=max&auto=format&n=iucTg0uK7vYN2FMG&q=85&s=e21c850046d719614ed356082bfaebf4" alt="The Integrations tab in organisation settings, showing the NEST connection marked Connected" width="2880" height="1800" data-path="images/screenshots/nest-integrations-dark.png" />
</Frame>

* **Test connection** makes one real call to NEST with the stored sign-in and tells you whether it still works.
* **Update sign-in details** replaces the stored username, password or employer reference, and checks them again. Use it when the NEST password changes.
* **Active** is a pause switch. Paused, nothing new is sent through the connection, but it keeps its sign-in and its history, and everything already sent stays where it is.
* **Health** shows the last time NEST answered successfully and any failures in a row.
* **Used by** lists the schemes linked to the connection.
* **Disconnect** removes the stored sign-in and stops everything that sends through the connection, but keeps it listed so what it sent stays readable. You can reconnect later. **Remove** deletes it for good. Both require you to unlink every scheme first, which is deliberate: a scheme is never left pointing at nothing.

## If you integrate over the API

Everything on this page is available through the API, with no button that has no endpoint behind it. The [Pensions API](/api-reference/pensions-v2/overview#provider-submissions) sends a pay run, approves the payment, and reads back what NEST reported; the [Integrations API](/api-reference/integrations/overview) manages the connection, follows every submission and every read, and explains the retry, pause and freshness rules in detail.

## Where to go next

<CardGroup cols={2}>
  <Card title="Auto-enrolment" icon="piggy-bank" href="/guides/pensions/auto-enrolment">
    Assessment, enrolment modes, postponement and the export files.
  </Card>

  <Card title="Contributions and refunds" icon="coins" href="/guides/pensions/contributions-and-refunds">
    Pension lines on the payslip, additional voluntary contributions and refunds.
  </Card>

  <Card title="Pensions API" icon="code" href="/api-reference/pensions-v2/overview#provider-submissions">
    Send a pay run, approve the payment and reconcile against NEST.
  </Card>

  <Card title="Integrations API" icon="plug" href="/api-reference/integrations/overview">
    Connections, activity, retries and data freshness.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.