California ABC License Fee Estimator

ANALife Services AuthorityNational 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

#### Assumptions & References

More Calculators

References