Vendors
A vendor is a contact you buy from. In Solid Accounting, vendors share the contacts table with customers and employees — contact_type = 'vendor' is the discriminator. This page covers vendor-specific behavior: 1099 setup, default accounts on bills, encrypted TIN handling, and vendor reports.
For the AP-side mechanics (bills, pay bill, vendor credits, AP aging), see Accounts Payable.
Vendor fields
The same contacts schema as customers, with two fields that matter most for vendors:
| Field | Notes |
|---|---|
| Display name | What appears on bills, checks, and pickers |
| Company name + first/last name | B2B vs individual |
| Email, phone, mobile, fax, website | Standard contact info |
| Default payment terms | Net 30, Net 15, Due on receipt — applies to new bills from this vendor |
| Default expense account | Suggested account on new bill lines (override per line) |
| Currency | Per-vendor currency for multi-currency bills |
| Active flag | Inactive vendors don't appear in pickers; history stays |
is_1099_eligible | Flag for year-end 1099 generation |
| TIN (encrypted) | Tax ID — SSN, EIN, or SIN — stored AES-256-encrypted |
tax_id_type | SSN, EIN, or SIN |
1099 setup
If you pay a contractor more than $600 in a calendar year and they're not incorporated, you owe them (and the IRS) a 1099-NEC at year-end. Solid tracks the data for this through two fields on each vendor: is_1099_eligible and the encrypted TIN.
When to flag a vendor as 1099-eligible
| Vendor type | 1099-eligible? |
|---|---|
| Sole proprietor / freelance contractor | Yes |
| Single-member LLC | Yes (file as the individual owner) |
| Multi-member LLC taxed as partnership | Yes |
| LLC taxed as S-corp or C-corp | No (corporations exempt) |
| Corporation (Inc., Corp., S-corp, C-corp) | No |
| Attorney (any structure) | Yes (special exception — even attorney-corps get 1099) |
| Foreign vendor with no US presence | No (different forms — W-8 series) |
When in doubt, request a W-9 from the vendor at onboarding. The W-9 tells you their tax classification and TIN; transcribe both into the vendor record.
Box assignment
Most non-employee compensation goes on Form 1099-NEC, Box 1. Solid defaults to Box 1 for 1099-eligible vendors. For unusual cases (rent payments → 1099-MISC Box 1, royalties → 1099-MISC Box 2, etc.), the vendor record has a per-vendor box override.
What gets included
The 1099 report aggregates all check and pay_bill payments to flagged vendors during the calendar year. Excluded by IRS rule:
- Credit-card payments — third-party processors report these on 1099-K; Solid filters them out automatically
- Third-party network payments (PayPal, Venmo for business, Cash App for business) — same reason
- Reimbursements for business expenses — handled through accountable plans, not 1099-able
- Payments under the threshold — the $600 minimum is per-payee per-year; Solid surfaces vendors near the threshold for review
Filing 1099s
Solid surfaces what to file — totals per vendor, per box. The actual filing happens through:
- The IRS FIRE / IRIS system — file directly with the IRS
- A 1099 service like Track1099 or Tax1099 — most accountants recommend this; the services handle the e-filing complexity for ~$3-5 per form
Solid deliberately doesn't file 1099s for you — that's a separate compliance and licensing surface we're not in.
TIN encryption
The TIN field uses AES-256 encryption at rest. Behavior:
- TINs are masked (
***-**-1234) in normal UI views — last 4 digits only - Full TIN reveal requires an Admin's password re-entry
- Every TIN view is logged in the audit trail
- 1099 report generation decrypts TINs in memory only; they don't sit in cleartext anywhere
For sensitive customer audits or regulatory reviews, the audit log can be filtered to show who saw which vendor's TIN, when. Useful evidence for SOC 2 or similar compliance reviews.
Multi-currency vendors
Setting a vendor's currency to a non-base currency makes their bills foreign-currency:
- Bills from them default to that currency
- Exchange rate captured at bill issuance, stored on the bill
- When you pay, FX gain/loss between bill date and pay date posts to a configured FX account
- The vendor's open balance (in AP Aging) reports in base currency, not native
See General Ledger → Multi-currency for the broader picture.
Reports involving vendors
| Report | What it shows |
|---|---|
| Vendor List | Every vendor with current balance, active status, 1099 flag |
| AP Aging | Vendors grouped by overdue bucket; the cash-planning list |
| Vendor Balance Detail | One vendor's full transaction history |
| Expenses by Vendor | Spending by vendor over a period |
| 1099 Report | Year-end summary by vendor and box for 1099 filing |
| W-9 Status | Which 1099-eligible vendors have/don't have a TIN on file (the year-end cleanup checklist) |
All export to PDF and CSV.
Vendor credits and refunds
When a vendor refunds you, issues a credit, or you discover an over-charge, post a vendor credit — a journal entry of transaction_type = 'credit_memo' with the vendor attached. See Accounts Payable → Vendor Credits for the full flow.
The credit can be applied to open bills or held as a vendor credit balance until you have new bills to apply against.
Inactivating vendors
Mark inactive when:
- The vendor is no longer used (you switched suppliers)
- The vendor was imported in bulk and isn't actually being paid
- You want a cleaner picker
Inactive vendors:
- Don't appear in bill/check pickers
- Don't show on default Vendor List (filterable to include)
- Historical bills, payments, and 1099 records remain
- Year-end 1099 reports include them with current-year payment totals (a deactivated vendor still gets a 1099 for the year you paid them)
Common gotchas
1099 vendor flagged but no TIN on file. Year-end you'll need it. Solid's W-9 Status report surfaces these — chase them in November/December, not January 30. Without a TIN, you can still file 1099 with "Refused to provide TIN" and back-up withhold 24%, but that's a much worse customer relationship than just collecting the W-9 up front.
1099 totals don't match Schedule C. Your Schedule C Total Expenses is everything you spent; the 1099 totals are only what you paid 1099-eligible vendors. They differ by every dollar paid to corporations, employees, credit cards, and any other non-1099-able party. The discrepancy is correct, not a bug.
Vendor credit applied to the wrong bill. Edit the payment_application that links them; the credit can be unapplied and reapplied to the right bill. Drill from the vendor's transaction history to find the offending application.
A vendor is both customer and vendor — invoices to them don't show on AP. Correct — you billed them, they didn't bill you. Their invoices are AR; their bills (if any) are AP. The same contacts row, two roles, separate balances.
Currency-mismatch on a check to a foreign-currency vendor. Your check posts in base currency (the bank account's currency); the vendor's bill is in their currency. The FX difference posts as gain/loss to the configured FX account. If the difference seems wrong, check that the exchange rates on both the bill and the check are accurate.
Cross-references
- Accounts Payable module — bills, pay bill, vendor credits, AP aging
- Customers module — the AR-side analog
- Reports → Tax reports — 1099 and other tax-form generation