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

# Contractors

> Add and manage the people you pay, one at a time or in bulk by CSV, and track who is ready to be paid.

The Contractors screen is where you manage everyone you pay. It is a sortable, searchable data table with per-row actions, bulk selection, and a detail view for each person. A contractor becomes payable only after they register their confidential account, so this screen also shows you exactly who is ready and who still needs to finish setup.

## What you see

The screen centers on one table, with search, sort, and filter controls above it and a running count of selected rows when you bulk-select.

| Column    | What it shows                                                    |
| --------- | ---------------------------------------------------------------- |
| Name      | The contractor's display name from your directory.               |
| Email     | The address invites and notifications go to.                     |
| Address   | Their Stellar address, shortened, with a one-click copy button.  |
| Status    | Invited, Onboarding, Ready, or Inactive.                         |
| Pay rate  | The saved amount and currency used to prefill a payroll run.     |
| Added     | The date you added them.                                         |
| Last paid | The date of their most recent settled payout, or a dash if none. |

### Search, sort, and filter

<CardGroup cols={3}>
  <Card title="Search" icon="filter">
    Match by name, email, or address as you type to find a person in a large list.
  </Card>

  <Card title="Sort" icon="table">
    Order the table by any column, such as name, status, pay rate, added date, or last paid.
  </Card>

  <Card title="Filter" icon="list-check">
    Narrow to a single status or a saved group, for example only Ready contractors before a run.
  </Card>
</CardGroup>

### Bulk select and row actions

Select multiple rows with the header checkbox or per-row checkboxes to act on many contractors at once, such as adding them all to a run or deactivating a group. Each row also has its own actions.

<CardGroup cols={3}>
  <Card title="Pay now" icon="money-bill-transfer">
    Start a run pre-scoped to this contractor.
  </Card>

  <Card title="Edit" icon="pen">
    Change name, email, address, pay rate, or notes.
  </Card>

  <Card title="View" icon="eye">
    Open the contractor detail view.
  </Card>

  <Card title="Resend invite" icon="paper-plane">
    Send the registration link again to an Invited contractor.
  </Card>

  <Card title="Deactivate" icon="circle-minus">
    Move a contractor to Inactive and exclude them from new runs.
  </Card>

  <Card title="Reactivate" icon="rotate">
    Return an Inactive contractor to their prior status.
  </Card>
</CardGroup>

## Contractor statuses

The status tells you where each person is in setup and whether you can pay them. Only Ready contractors are payable, because a confidential payout is encrypted to the recipient's public viewing key, which exists only after they register.

| Status     | Meaning                                                                                 | What moves it forward                                                   |
| ---------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| Invited    | You added them by email and sent a registration link. They have not connected a wallet. | They open the invite, connect a wallet, and start registration.         |
| Onboarding | They connected a wallet and started registration but have not finished.                 | They complete self-registration of their confidential account on-chain. |
| Ready      | They registered their confidential account and are payable.                             | Nothing. They are ready for every run.                                  |
| Inactive   | Deactivated and excluded from new runs.                                                 | You reactivate them from the row actions or their detail view.          |

<Warning>
  You can only include Ready contractors in a payroll run. An Invited or Onboarding contractor shows in the run selector as blocked, with the reason, and a resend-invite shortcut so you can nudge them to finish.
</Warning>

## Add one contractor (manual)

<Steps>
  <Step title="Open Add contractor" icon="user-plus">
    Fill in name, email, and either a Stellar address or an invite by email so they connect a wallet later. Add a pay rate with its currency and any notes.
  </Step>

  <Step title="Confiroll validates as you type" icon="circle-check">
    Live validation confirms a valid Stellar strkey address (a G-address or a C-address), a valid email, no duplicate of an existing contractor, and a pay rate greater than zero.
  </Step>

  <Step title="Save" icon="floppy-disk">
    If the address you entered is already registered on-chain, the contractor is marked Ready and payable right away. Otherwise they are saved as Invited and receive a registration link.
  </Step>
</Steps>

<Info>
  Adding a contractor does not make them payable on its own. They become Ready only after they connect a wallet and self-register their confidential account. Think of registration as collecting a payout method before the first paycheck.
</Info>

## Add many contractors (CSV)

<Steps>
  <Step title="Upload your CSV" icon="upload">
    Start from the downloadable template or upload your own spreadsheet. The template has columns for name, email, address, pay rate, and currency.
  </Step>

  <Step title="Map columns" icon="table">
    Match your spreadsheet columns to name, email, address, and amount. Confiroll remembers your mapping so repeat imports are one step.
  </Step>

  <Step title="Review the preview" icon="list-check">
    A preview table validates every row: valid strkey address, valid email, amount greater than zero, and duplicate detection against your existing directory. Invalid rows are flagged inline with the exact reason.
  </Step>

  <Step title="Fix or skip, then import" icon="circle-check">
    Correct the flagged rows in place or skip them, then import the valid rows. Each imported contractor lands as Ready if their address is already registered, or Invited otherwise, and invites go out automatically.
  </Step>
</Steps>

<Note>
  Download the CSV template from the upload dialog to get the exact column headers and a sample row. Starting from the template keeps the mapping step to a single confirmation.
</Note>

## Contractor detail view

Selecting a row or the View action opens a full profile for one contractor.

<CardGroup cols={2}>
  <Card title="Profile" icon="building">
    Name, email, notes, added date, and current status in one header.
  </Card>

  <Card title="Address and viewing key" icon="key">
    Their Stellar address with copy, plus their public viewing key, which is the key your browser encrypts each payout to. Both are public data.
  </Card>

  <Card title="Onboarding status" icon="hourglass-half">
    Where they are in registration, from Invited through Ready, with the next action for each state.
  </Card>

  <Card title="Payout history" icon="clock-rotate-left">
    Every settled payout to this person, each with its date, its amount from your private ledger, and an explorer link.
  </Card>

  <Card title="Pay settings" icon="coins">
    The saved pay rate and currency used to prefill a run, editable in place.
  </Card>

  <Card title="Invite management" icon="envelope">
    Resend the registration link, copy the invite URL, or update the email an invite goes to.
  </Card>
</CardGroup>

## FAQ

<AccordionGroup>
  <Accordion title="Why do contractors have to register first?">
    A confidential payout encrypts the amount to the recipient's public viewing key. That key exists only after the contractor connects a wallet and self-registers their confidential account on-chain. Until then there is no key to encrypt to, so they stay in Invited or Onboarding and are not selectable in a run.
  </Accordion>

  <Accordion title="What happens if I enter a wrong or unregistered address?">
    Live validation rejects anything that is not a valid Stellar strkey, so a malformed address never saves. A well-formed address with no registration on-chain saves the contractor as Invited rather than Ready, and they receive a registration link. Once they register, their status flips to Ready and they become payable.
  </Accordion>

  <Accordion title="Can I reactivate someone I deactivated?">
    Yes. An Inactive contractor keeps their profile, address, and payout history. Use Reactivate from the row actions or the detail view to return them to their prior status, and they rejoin future runs.
  </Accordion>

  <Accordion title="How do I resend an invite?">
    Use Resend invite from the row actions or Invite management in the detail view to send the registration link again. You can also update the destination email first if the original bounced or changed.
  </Accordion>
</AccordionGroup>
