California ABC License Fee Estimator
ANA›Life Services Authority›National Calculator Authority›California ABC License Fee Estimator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
California ABC License Fee Estimator
Estimate your California Department of Alcoholic Beverage Control (ABC) license application and annual renewal fees based on license type, county population tier, and business characteristics.
License Type
-- Select License Type --
Type 20 – Off-Sale Beer & Wine (e.g., grocery, convenience)
Type 41 – On-Sale Beer & Wine (eating place) Type 42 – On-Sale Beer & Wine (public premises)
Type 21 – Off-Sale General (liquor store)
Type 47 – On-Sale General (eating place / restaurant) Type 48 – On-Sale General (bar / nightclub) Type 49 – On-Sale General (seasonal)
Type 01 – Beer Manufacturer (large brewery) Type 02 – Winegrower (winery) Type 23 – Small Beer Manufacturer (brewpub / craft) Type 74 – Craft Distiller
Type 58 – Caterer's Permit (on-sale general) Type 77 – Special On-Sale General (hotel / motel)
County Population Tier
-- Select County Population -- Tier 1 – Under 30,000 (rural / small county) Tier 2 – 30,000 – 99,999 Tier 3 – 100,000 – 499,999 Tier 4 – 500,000 – 999,999 Tier 5 – 1,000,000+ (Los Angeles, San Diego, etc.)
Seating / Occupancy Capacity
Required for on-sale licenses. Used to determine occupancy surcharge.
Annual Production (barrels / gallons)
For breweries: barrels/year. For wineries/distillers: gallons/year.
Application Type
New License Application Transfer of Existing License Annual Renewal Only
Premises Type
Standard (existing building) Catering / Mobile Temporary / Event
Include Fingerprint / Live Scan Fee (per applicant)
Number of Owners / Principals Requiring Fingerprinting
Calculate Fees
(function() {
// ── Fee Tables (sourced from CA ABC Fee Schedule, effective 2024) ────────── // Structure: licenseType -> { appFee, annualFee, label, isOnSale, isMfg } // Application fees = original application fee (new license) // Transfer fees differ slightly; renewal = annualFee only const LICENSE_DATA = { "20": { label:"Type 20 – Off-Sale Beer & Wine", appFee: 100, annualFee: 200, isOnSale: false, isMfg: false }, "41": { label:"Type 41 – On-Sale Beer & Wine (EP)", appFee: 100, annualFee: 200, isOnSale: true, isMfg: false }, "42": { label:"Type 42 – On-Sale Beer & Wine (PP)", appFee: 200, annualFee: 400, isOnSale: true, isMfg: false }, "21": { label:"Type 21 – Off-Sale General", appFee: 100, annualFee: 600, isOnSale: false, isMfg: false }, "47": { label:"Type 47 – On-Sale General (EP)", appFee: 100, annualFee: 600, isOnSale: true, isMfg: false }, "48": { label:"Type 48 – On-Sale General (Bar)", appFee: 200, annualFee: 800, isOnSale: true, isMfg: false }, "49": { label:"Type 49 – On-Sale General (Seasonal)",appFee: 100, annualFee: 400, isOnSale: true, isMfg: false }, "01": { label:"Type 01 – Beer Manufacturer", appFee: 300, annualFee: 1100, isOnSale: false, isMfg: true }, "02": { label:"Type 02 – Winegrower", appFee: 300, annualFee: 1100, isOnSale: false, isMfg: true }, "23": { label:"Type 23 – Small Beer Manufacturer", appFee: 300, annualFee: 600, isOnSale: false, isMfg: true }, "74": { label:"Type 74 – Craft Distiller", appFee: 300, annualFee: 1100, isOnSale: false, isMfg: true }, "58": { label:"Type 58 – Caterer's Permit", appFee: 100, annualFee: 400, isOnSale: true, isMfg: false }, "77": { label:"Type 77 – Special On-Sale General", appFee: 200, annualFee: 800, isOnSale: true, isMfg: false }, };
// County population multiplier on annual fee // CA ABC uses population of county to scale certain license fees // Multipliers approximate the ABC fee schedule tiers const POP_MULTIPLIER = { "1": 1.0, "2": 1.5, "3": 2.0, "4": 2.5, "5": 3.0 };
// Occupancy surcharge for on-sale licenses (per seat above threshold) // CA ABC charges additional fees for large-capacity premises const OCCUPANCY_THRESHOLD = 50; // seats const OCCUPANCY_SURCHARGE = 1.50; // $ per seat above threshold
// Production surcharge for manufacturers (per barrel/gallon above threshold) const PROD_THRESHOLD_BARRELS = 100; // barrels (beer) const PROD_THRESHOLD_GALLONS = 5000; // gallons (wine/spirits) const PROD_SURCHARGE_BARREL = 2.00; // $ per barrel above threshold const PROD_SURCHARGE_GALLON = 0.10; // $ per gallon above threshold
// Transfer fee = 50% of application fee (CA ABC policy) const TRANSFER_FEE_RATIO = 0.50;
// Fingerprint / Live Scan fee per person (CA DOJ + FBI + service) const FINGERPRINT_FEE = 86; // $32 DOJ + $17 FBI + ~$37 Live Scan service
// State-mandated surcharges added to annual fee const STATE_SURCHARGE_PCT = 0.10; // 10% state surcharge on annual fee
// ── Show/hide conditional fields ───────────────────────────────────────── window.calUpdateFields = function() { const lt = document.getElementById("cal-license-type").value; const data = LICENSE_DATA[lt]; const capGroup = document.getElementById("cal-capacity-group"); const prodGroup = document.getElementById("cal-production-group"); if (!data) { capGroup.style.display="none"; prodGroup.style.display="none"; return; } capGroup.style.display = data.isOnSale ? "block" : "none"; prodGroup.style.display = data.isMfg ? "block" : "none"; };
// ── Validation helpers ──────────────────────────────────────────────────── function showErr(id, msg) { const el = document.getElementById(id); if (el) { el.textContent = msg; } } function clearErr(id) { showErr(id, ""); } function clearAllErrors() { ["cal-license-type-err","cal-county-pop-err","cal-capacity-err", "cal-production-err","cal-num-owners-err"].forEach(clearErr); }
// ── Main calculation ────────────────────────────────────────────────────── window.calCalc = function() { clearAllErrors(); let valid = true;
const ltVal = document.getElementById("cal-license-type").value; const popVal = document.getElementById("cal-county-pop").value; const appType = document.getElementById("cal-new-or-transfer").value; const fpCheck = document.getElementById("cal-fingerprint").checked; const numOwn = parseInt(document.getElementById("cal-num-owners").value) || 1;
if (!ltVal) { showErr("cal-license-type-err", "Please select a license type."); valid=false; } if (!popVal) { showErr("cal-county-pop-err", "Please select a county population tier."); valid=false; } if (!valid) { return; }
const data = LICENSE_DATA[ltVal]; const popMult = POP_MULTIPLIER[popVal];
// ── Base fees ────────────────────────────────────────────────────────── let applicationFee = 0; if (appType === "new") { applicationFee = data.appFee; } else if (appType === "transfer") { applicationFee = Math.round(data.appFee * TRANSFER_FEE_RATIO); } // renewal = no application fee
// Annual fee scaled by county population let annualBase = Math.round(data.annualFee * popMult);
// ── Occupancy surcharge (on-sale licenses) ───────────────────────────── let occupancySurcharge = 0; if (data.isOnSale) { const capEl = document.getElementById("cal-capacity"); const cap = parseInt(capEl.value); if (isNaN(cap) || cap 10000) { showErr("cal-capacity-err", "Capacity seems unusually high. Please verify."); valid=false; } else if (cap > OCCUPANCY_THRESHOLD) { occupancySurcharge = Math.round((cap - OCCUPANCY_THRESHOLD) * OCCUPANCY_SURCHARGE); } } if (!valid) return;
// ── Production surcharge (manufacturer licenses) ─────────────────────── let productionSurcharge = 0; if (data.isMfg) { const prodEl = document.getElementById("cal-production"); const prodVal = parseFloat(prodEl.value); if (isNaN(prodVal) || prodVal PROD_THRESHOLD_BARRELS) { productionSurcharge = Math.round((prodVal - PROD_THRESHOLD_BARRELS) * PROD_SURCHARGE_BARREL); } } else { if (prodVal > PROD_THRESHOLD_GALLONS) { productionSurcharge = Math.round((prodVal - PROD_THRESHOLD_GALLONS) * PROD_SURCHARGE_GALLON); } } } } if (!valid) return;
// ── Validate num owners ──────────────────────────────────────────────── if (numOwn 20) { showErr("cal-num-owners-err", "Number of owners must be between 1 and 20."); return; }
// ── State surcharge on annual fee ────────────────────────────────────── const stateSurcharge = Math.round(annualBase * STATE_SURCHARGE_PCT);
// ── Fingerprint fees ─────────────────────────────────────────────────── const fingerprintTotal = fpCheck ? FINGERPRINT_FEE * numOwn : 0;
// ── Totals ───────────────────────────────────────────────────────────── const totalAnnual = annualBase + occupancySurcharge + productionSurcharge + stateSurcharge; const grandTotal = applicationFee + totalAnnual + fingerprintTotal;
// ── Render result ────────────────────────────────────────────────────── const appTypeLabel = appType === "new" ? "New Application" : appType === "transfer" ? "Transfer" : "Renewal"; const popLabels = {"1":"Under 30,000","2":"30,000–99,999","3":"100,000–499,999","4":"500,000–999,999","5":"1,000,000+"};
let rows = "";
const row = (label, val, note="") =>
${label}$${val.toLocaleString()}${note};
if (appType !== "renewal") {
rows += row(appType === "new" ? "Application Fee" : "Transfer Fee", applicationFee,
appType === "transfer" ? "50% of base application fee" : "One-time, non-refundable");
}
rows += row("Annual License Fee (base)", annualBase, $${data.annualFee} × ${popMult}× pop. multiplier);
if (occupancySurcharge > 0) {
const cap = parseInt(document.getElementById("cal-capacity").value);
rows += row("Occupancy Surcharge", occupancySurcharge,
(${cap} − ${OCCUPANCY_THRESHOLD}) seats × $${OCCUPANCY_SURCHARGE.toFixed(2)});
}
if (productionSurcharge > 0) {
const prod = parseFloat(document.getElementById("cal-production").value);
const unit = (ltVal==="01"||ltVal==="23") ? "barrels" : "gallons";
const thresh = (ltVal==="01"||ltVal==="23") ? PROD_THRESHOLD_BARRELS : PROD_THRESHOLD_GALLONS;
const rate = (ltVal==="01"||ltVal==="23") ? PROD_SURCHARGE_BARREL : PROD_SURCHARGE_GALLON;
rows += row("Production Surcharge", productionSurcharge,
(${prod.toLocaleString()} − ${thresh.toLocaleString()}) ${unit} × $${rate.toFixed(2)});
}
rows += row("State Surcharge (10% of annual)", stateSurcharge, "CA state-mandated surcharge");
if (fingerprintTotal > 0) {
rows += row(Live Scan / Fingerprint (${numOwn} person${numOwn>1?"s":""}), fingerprintTotal,
$${FINGERPRINT_FEE} × ${numOwn} (DOJ $32 + FBI $17 + service ~$37));
}
const resultEl = document.getElementById("cal-result"); resultEl.style.display = "block"; resultEl.innerHTML = ` ### Fee Estimate: ${data.label}
${appTypeLabel} | County Population: ${popLabels[popVal]}
Fee Component Amount Notes
${rows}
Estimated Total $${grandTotal.toLocaleString()} ${appType==="renewal"?"Annual renewal cost":"First-year total cost"}
⚠️ This is an estimate only. Actual fees are set by the CA ABC and may vary. Always confirm current fees at abc.ca.gov.
`; };
})();
#### Formula
Grand Total = Application/Transfer Fee + Annual License Fee + Occupancy Surcharge + Production Surcharge + State Surcharge + Fingerprint Fees
- Application Fee = Base app fee (new) or Base app fee × 50% (transfer); $0 for renewal
- Annual License Fee = Base annual fee × County Population Multiplier (1.0× – 3.0×)
- Occupancy Surcharge = max(0, Capacity − 50) × $1.50/seat (on-sale licenses only)
-
Production Surcharge = max(0, Volume − threshold) × rate/unit (manufacturer licenses only)
-
State Surcharge = Annual License Fee × 10%
- Fingerprint Fee = $86 × number of principals (DOJ $32 + FBI $17 + Live Scan service ~$37)
#### Assumptions & References
- Base application and annual fees sourced from the CA ABC Fee Schedule (2024) — abc.ca.gov/licensing/license-fees
- County population multipliers (1.0× – 3.0×) reflect the ABC's tiered fee structure under Business & Professions Code §23320, which scales fees by county population.
- Fees are subject to change. Always verify current fees directly with the CA ABC at abc.ca.gov or call 1-800-858-0715.
More Calculators
- Denied Claim Financial Impact Calculator
- Appeal Success Likelihood Estimator
- State Pension Entitlement Estimator
- UK National Insurance Contributions Calculator
- NI Class 2 vs Class 4 Contributions Comparator
- Gaps in NI Record Cost Calculator