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:

FieldNotes
Display nameWhat appears on bills, checks, and pickers
Company name + first/last nameB2B vs individual
Email, phone, mobile, fax, websiteStandard contact info
Default payment termsNet 30, Net 15, Due on receipt — applies to new bills from this vendor
Default expense accountSuggested account on new bill lines (override per line)
CurrencyPer-vendor currency for multi-currency bills
Active flagInactive vendors don't appear in pickers; history stays
is_1099_eligibleFlag for year-end 1099 generation
TIN (encrypted)Tax ID — SSN, EIN, or SIN — stored AES-256-encrypted
tax_id_typeSSN, 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 type1099-eligible?
Sole proprietor / freelance contractorYes
Single-member LLCYes (file as the individual owner)
Multi-member LLC taxed as partnershipYes
LLC taxed as S-corp or C-corpNo (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 presenceNo (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

ReportWhat it shows
Vendor ListEvery vendor with current balance, active status, 1099 flag
AP AgingVendors grouped by overdue bucket; the cash-planning list
Vendor Balance DetailOne vendor's full transaction history
Expenses by VendorSpending by vendor over a period
1099 ReportYear-end summary by vendor and box for 1099 filing
W-9 StatusWhich 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

Updated May 1, 2026
Edit this page on GitHub →
Was this helpful?

We use this to prioritize which docs to improve. No tracking, no email follow-up.