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

# How to take used stock in and grade it

> Receive a used unit and make it sellable — why the grade has to be an attribute rather than the Condition field, and what to record on intake.

<Card title="Open in TWICE Admin" icon="external-link" href="https://admin.twicecommerce.com/inventory/stock-items" horizontal>
  inventory/stock-items
</Card>

Taking in used stock is registration with three extra jobs: recording what it cost you, recording what state it is in, and getting it into a shape a resale listing can actually find.

The third one is where this goes wrong, and it goes wrong at the first step rather than the last. **The decision that matters is where the grade lives** — and the obvious-looking answer is the wrong one.

## The grade has to be an attribute

A stock item has a built-in **Condition** field. It is free text, and you can filter the inventory table on it, so it looks like the right home for a grade.

It is not, if you want a listing to draw from graded stock. A listing's fulfilment rules can match stock on exactly five things:

| A rule can match on |                                |
| ------------------- | ------------------------------ |
| **Attribute**       | any attribute you have defined |
| Item code           | the unit's own code            |
| SKU code            | its SKU's code                 |
| Item name           |                                |
| SKU name            |                                |

**The built-in Condition field is not among them.** A rule cannot see it. So a grade recorded only in Condition can be read by a human and filtered in a table, and can never bind a listing to the stock it describes.

Put the grade in an **attribute** with fixed values. Use Condition alongside it for the free-text detail — *scuff on left fork* — where prose is genuinely what you want.

Decide the scheme before the first unit arrives. Changing it later means re-grading everything already on the books.

## Prerequisites

<Warning>
  **Required permissions:** `inventory:stock_item:create` and `inventory:stock_item:manage`, plus the ability to create attributes on the inventory resource. Recording what the unit cost also needs `inventory:stock_item_cost`, which the **Member** system role does not hold.
</Warning>

<Info>
  **Before the first unit, settle three things:**

  * **The grading scale** — a small, fixed set of values everyone uses the same way. Four or five grades that a warehouse can apply consistently beat ten that get argued about.
  * **Who grades** — one person's judgement applied consistently is worth more than a detailed rubric applied by whoever is nearest.
  * **What "sellable" means per grade** — which grades go to resale, which go back into the rental pool, which get refurbished first.
</Info>

## The Walkthrough

<Steps>
  <Step title="Create the grading attribute">
    On the **inventory** resource, create an attribute for the grade with a fixed set of values, and group it with the other intake fields so they sit together on the item.

    Add whatever else your resale needs to state: an intake date, the source it came from, refurbishment status. None of these ship as fields — they are attributes you define.

    Read more: [Attributes](/docs/concepts/admin/attributes)
  </Step>

  <Step title="Register the unit">
    Register it as you would any stock item, with two intake-specific habits:

    * **Photograph it against the record.** Used stock is sold on its condition, and the photos are the evidence. Registering from photos also gets you a name and category suggestion — see [Register from photos](/docs/guides/inventory/register-from-photos).
    * **Give it its own identity.** Used units are not interchangeable, so track individually rather than pooling, and give each one a stock code.

    Read more: [Register stock items](/docs/guides/inventory/register-stock-items)
  </Step>

  <Step title="Record what it cost you">
    Set the **purchase price** on the item. It flows into the item's cost total and is what any later margin is measured against.

    <Note>Purchase price can be inherited from the SKU rather than set on the unit. For used stock that is usually wrong — every unit came in at its own price. Set it on the item so it is the unit's number, not the model's.</Note>

    Read more: [Track item costs and income](/docs/guides/inventory/track-item-costs-and-income)
  </Step>

  <Step title="Grade it">
    Set the grading attribute. Add free-text detail in **Condition** if there is something specific worth saying.

    Grade against the unit, not the model. The point of individual tracking is that two units of the same thing can be worth different money.
  </Step>

  <Step title="Track refurbishment before it goes out">
    A unit that needs work should not be sellable while it waits.

    Reserve it so it leaves availability, attach the work — notes, invoices, before-and-after photos — to its **Documents** tab, and update the grade when the work changes what it is worth. Then end the reservation.

    That is the same pattern as a service reservation — see [Reserve a stock item](/docs/guides/inventory/reserve-a-stock-item) for taking a unit out of availability while work happens.
  </Step>

  <Step title="Hand it to the catalog">
    Once graded and at the right location, the unit is ready for a resale listing to draw from — through the grading attribute you created in step one.

    Building that listing is the catalog side of the job and a guide of its own.
  </Step>
</Steps>

## How do I know it worked?

* **The unit has a grade in the attribute**, not only in the Condition text.
* **Filtering the inventory table by that attribute finds it**, alongside everything else at the same grade. If it does not appear, no rule will find it either.
* **Its purchase price is on the item**, and shows in its cost total.
* **The photos and any refurbishment paperwork are on the record.**
* **A unit still being worked on is not bookable** — the reservation is on its Events tab.

## Troubleshooting / Common Pitfalls

<AccordionGroup>
  <Accordion title="My resale listing cannot find the graded stock">
    **Almost certainly the grade is in the Condition field rather than an attribute.** Fulfilment rules can match on attributes, item and SKU codes, and item and SKU names. The built-in Condition field is not on that list, so a rule cannot see it.

    **What to do:** create the grading attribute, set it on the affected units — bulk edit if there are many — and point the rule at the attribute. Keep Condition for prose.
  </Accordion>

  <Accordion title="Everyone grades slightly differently">
    **Cause:** a free-text or over-detailed scale. If the grade is typed rather than chosen, you will end up with *Good*, *good*, *Gd* and *good (minor scuffs)* as four distinct values.

    **What to do:** use a fixed value list so grading is a choice, not a sentence. Fewer grades, applied consistently, are worth more than a precise scale nobody follows.
  </Accordion>

  <Accordion title="I cannot see purchase price on the item">
    **Cause:** the `stock_item_cost` permission, which the **Member** system role does not hold. It is separate so stock can be managed without exposing what it cost.

    **What to do:** ask for a role that includes it. If intake staff are on Member, either grant it or split the job — they register and grade, someone else records the money.
  </Accordion>

  <Accordion title="A unit went out for rental while it was waiting to be refurbished">
    **Cause:** it was graded but never reserved. A grade is information; it does not stop the unit being offered.

    **What to do:** reserve on intake for anything not immediately sellable, and release the reservation when the work is done. Make it part of receiving, not a later step.
  </Accordion>

  <Accordion title="I want to change our grading scheme now that we have used it a while">
    **Cost is proportional to what you have already graded.** Existing units keep their old values, so the scale splits until everything is re-graded, and any rule matching on the old values quietly stops finding the new ones.

    **What to do:** bulk-edit the old values across to the new ones in one pass, then update the rules. Do it deliberately rather than letting both schemes run — a half-migrated scale is worse than either scheme on its own.
  </Accordion>

  <Accordion title="Where do I record when it arrived, or who it came from?">
    **As attributes you create.** There is no built-in intake date or source field on a stock item.

    **What to do:** add them as attributes in step one if your resale needs them. Provenance sells used stock, so it is usually worth the two extra fields.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Register stock items" icon="plus" href="/docs/guides/inventory/register-stock-items">
    The registration this builds on.
  </Card>

  <Card title="Register from photos" icon="camera" href="/docs/guides/inventory/register-from-photos">
    Photographing used stock against the record as you register it.
  </Card>

  <Card title="Reserve a stock item" icon="calendar-plus" href="/docs/guides/inventory/reserve-a-stock-item">
    Holding a unit out of availability while refurbishment happens.
  </Card>

  <Card title="Attributes" icon="tags" href="/docs/concepts/admin/attributes">
    Creating the grading attribute a rule can actually match on.
  </Card>
</CardGroup>
