Inventory → Suppliers
Purpose
Track the DEA-registered wholesalers (and authorized internal sources) you receive controlled substances from. Every container in your inventory must trace back to a supplier — that's the source link DEA inspectors verify.
Regulatory basis: DEA Schedule II ordering and the DEA Form 222 / CSOS chain; records of receipt must identify the source.
When to use it
- First-time setup: add your primary suppliers before you receive any containers
- New supplier added: a new wholesaler signs you up; capture their info
- Internal transfer source: another clinic location transfers controlled substances to you
- Update DEA registration: supplier renews their DEA registration; update the date / number
Walkthrough
Step 1 — Open the suppliers list
Navigate to /home/<your-clinic>/inventory/suppliers. You'll see a list of suppliers with name, DEA registration, contact info, and active status.

After clicking Add supplier, the New Supplier page (/inventory/suppliers/new) opens with an empty form:

After filling name, DEA registration, and contact details:

After saving, the supplier appears in the list:

Step 2 — Click "Add supplier"
You're taken to the New Supplier page (/inventory/suppliers/new), a single-column form. A ‹ Back to suppliers link returns you to the list without saving.
Step 3 — Fill in supplier details
Required:
- Supplier name — the legal business name (e.g., "Patterson Veterinary Supply", "MWI Animal Health")
Strongly recommended:
- DEA registration — enter it exactly as it appears on the supplier's paperwork. Most look like
AB1234567(2 letters + 7 digits), and anything else shows a note asking you to double-check rather than blocking the save. Patterson, MWI, Henry Schein, Covetrus, etc. are all DEA-registered wholesalers; their DEA registration is on every invoice and packing slip.
Optional contact fields:
- Contact name — the rep at the supplier
- Email / Phone / Fax
- Address (line 1, line 2, city, state, postal code) — used for DEA correspondence chain
Status:
- Active (default) — appears in receive-container forms
- Inactive — hidden from receive-container forms but historical containers preserved
Notes — optional textarea for anything else (e.g., "Net-30 terms; account #1234").
Click Save.
Step 4 — Internal-transfer "suppliers"
If a sister clinic, satellite location, or partner practice transfers controlled substances to you, capture them here as a supplier:
- Supplier name — the source clinic name (e.g., "Oak Valley Vet — Downtown")
- DEA registration — leave blank if they don't have a wholesaler registration; the Receive container form's
transfermode uses a separate "transfer documentation number" field instead of strict DEA registration validation - Notes — document the relationship (e.g., "Same-owner satellite; uses our DEA registration")
Step 5 — Mark inactive when no longer used
When you stop ordering from a supplier, click Actions → Mark inactive. Historical containers / invoices / transactions remain queryable; the supplier just disappears from new-receipt dropdowns.
You cannot hard-delete a supplier with linked containers or invoices — DEA records must be preserved.
Field reference
Supplier form
| Field | Label | Type | Required | Validation |
|---|---|---|---|---|
name |
Supplier name | text | ✓ | 1-255 chars |
dea_registration |
DEA registration | text | optional | no format rule; a value unlike RP1234567 shows a note, never an error |
contact_name |
Contact person | text | optional | max 255 |
email |
text | optional | valid email format, max 320 | |
phone |
Phone | text | optional | max 20 |
fax |
Fax | text | optional | max 20 |
address_line1 |
Address line 1 | text | optional | max 255 |
address_line2 |
Address line 2 | text | optional | max 255 |
city |
City | text | optional | max 100 |
state |
State | text | optional | exactly 2 chars (US state code) |
postal_code |
Postal code | text | optional | max 10 |
is_active |
Status | toggle | optional | boolean; default true |
notes |
Notes | textarea | optional | no length limit enforced |
Edge cases
Soft warning: missing DEA registration
If you save a supplier without a DEA registration number, the system warns you (amber, not blocking). For internal-transfer suppliers this is expected. For commercial wholesalers, this is almost always a data-entry oversight — every commercial supplier of Schedule II-V substances must be DEA-registered to ship to you.
Receiving a container with no DEA-registered supplier
In the Receive container form, choose receivingType = transfer_in for internal transfers (uses a transfer-document number instead of a DEA registration) or paper_migration for historical data entered after the fact (allows looser supplier validation).
DEA registration in a format other than AB1234567
Enter it in the DEA field anyway. A non-US DEA-equivalent (e.g., a Canadian Health Canada number) or an institutional registration carrying an affiliation suffix is stored as you typed it. CS Logbook shows a note that the value doesn't match the usual shape, which is there to catch typos, and you can save straight through it.
You no longer need the old workaround of leaving the field blank and putting the real number in Notes. If you have suppliers recorded that way, move the number into the DEA field so it appears on reports.
Supplier renamed (acquisition / rebrand)
Edit the supplier's name. Historical references to this supplier (containers, invoices) update automatically because they reference by ID, not by name string.
Common mistakes
- Free-text supplier name on every receipt. It's tempting to skip the supplier setup and just type the name into a notes field, but the Receive container form requires selecting from the dropdown. Add suppliers first, even if it feels like extra setup.
- Reusing one "miscellaneous supplier". Don't pile every minor supplier into a single "Misc" entry. Each real supplier needs its own record so the audit chain is meaningful.
- Putting clinic DEA in the supplier DEA field. That's your DEA registration, not theirs. The supplier DEA field is for the wholesaler.
- Marking inactive prematurely. If you might use this supplier again next month, leave them active. Inactivating just hides the supplier from receive forms — it doesn't archive the historical chain — but flipping it back later requires a click.
Related
- Invoices — invoice references a supplier
- Containers — containers reference a supplier (directly via the receive form)
- Glossary § Supplier
- Compliance § DEA Form 222 / CSOS — Schedule II ordering chain