SLA Management

SLA Breach Consequences: What Happens When You Miss Your Availability Commitment

Understand the financial, legal, and customer relationship consequences of SLA breaches, and how to handle them professionally when they happen.

AzMonitor TeamMay 14, 20257 min read · 1,465 wordsUpdated January 20, 2026
SLA breachSLA creditsuptime guaranteecustomer contracts

SLA breaches happen even at well-run companies. The companies that handle them well — proactively, honestly, with appropriate remedies — often retain customers through breaches. The companies that handle them poorly lose both the contractual battle and the customer relationship. Understanding the consequences of SLA breaches before they happen is the first step to handling them professionally.

Types of SLA Breach Consequences

Financial Consequences

SLA credits — The most common remedy. The customer receives a credit against future invoices equal to some percentage of their monthly fee. Credit schedules typically look like this:

| Availability | Credit | |---|---| | 99.0% - 99.9% (SLA) | 10% of monthly fee | | 95.0% - 99.0% | 25% of monthly fee | | < 95.0% | 50% of monthly fee |

Pro-rated refunds — Some contracts allow customers to request refunds rather than credits, particularly for severe breaches.

Fee waivers — For enterprise contracts, some breaches trigger waiving the current month's fee entirely.

Legal Consequences

Termination rights — Contracts often include "termination for cause" provisions triggered by repeated SLA breaches. Typical language: "Customer may terminate this Agreement for cause if Provider fails to meet the Service Level Agreement in any three months during a rolling 12-month period."

Warranty breach claims — SLAs are often structured as warranties. A breach may give customers grounds for breach of warranty claims beyond the credit schedule.

Consequential damages (rare) — Most SaaS contracts limit liability to fees paid, not consequential damages. But if your contract doesn't have this limitation, a prolonged outage causing customer business loss could result in larger liability.

Customer Relationship Consequences

Trust erosion — Every breach erodes the trust reservoir. The first breach handled well can be weathered; repeated breaches without improvement signal systemic problems.

Churn trigger — Customers on the margin of renewal who experience a significant breach often don't renew. Churn data consistently shows that customers who experience outages churn at 2-3x the rate of customers who don't.

Negative references — Enterprise customers who feel their breach was handled poorly become negative references during your next sales cycle.

Upsell/expansion block — It's very difficult to expand an account (sell more seats, features, or usage) in the weeks immediately following a breach.

Detecting Breach Situations in Real Time

class SLABreachDetector:
    """
    Monitor SLA status in real time and alert before breach occurs.
    """
    
    def check_breach_risk(self, customer_id, service_name, current_date):
        """
        Calculate whether an account is at risk of SLA breach
        before the month is over.
        """
        # Get current month start
        month_start = current_date.replace(day=1, hour=0, minute=0, second=0)
        
        # Total minutes in the month
        days_in_month = 30  # Approximate; calculate precisely for production
        total_minutes_in_month = days_in_month * 24 * 60
        
        # Minutes elapsed so far
        elapsed_minutes = (current_date - month_start).total_seconds() / 60
        
        # Downtime so far this month
        downtime_minutes = self.get_downtime_minutes(
            customer_id, service_name, month_start, current_date
        )
        
        # Customer's SLA target (e.g., 99.9%)
        sla_target_pct = self.get_sla_target(customer_id)
        
        # Maximum allowed downtime for this SLA
        max_downtime_minutes = total_minutes_in_month * (1 - sla_target_pct / 100)
        
        # Remaining downtime budget
        remaining_budget_minutes = max_downtime_minutes - downtime_minutes
        
        # Remaining time in month
        remaining_minutes = total_minutes_in_month - elapsed_minutes
        
        return {
            "customer_id": customer_id,
            "service": service_name,
            "sla_target_pct": sla_target_pct,
            "downtime_so_far_minutes": round(downtime_minutes, 1),
            "max_allowed_downtime_minutes": round(max_downtime_minutes, 1),
            "remaining_budget_minutes": round(remaining_budget_minutes, 1),
            "remaining_month_minutes": round(remaining_minutes, 1),
            "breach_risk": remaining_budget_minutes <= 0,
            "at_risk": remaining_budget_minutes < 15,  # Less than 15 min remaining
            "current_availability_pct": round(
                (elapsed_minutes - downtime_minutes) / elapsed_minutes * 100, 4
            ) if elapsed_minutes > 0 else 100.0
        }
    
    def get_accounts_near_breach(self):
        """Return all enterprise accounts approaching SLA breach."""
        at_risk = []
        
        for customer in self.get_enterprise_customers():
            for service in customer.monitored_services:
                status = self.check_breach_risk(
                    customer.id, service.name, datetime.utcnow()
                )
                if status["at_risk"] or status["breach_risk"]:
                    at_risk.append({
                        "customer": customer.name,
                        "service": service.name,
                        "breach": status["breach_risk"],
                        "remaining_budget_minutes": status["remaining_budget_minutes"],
                        "csm": customer.customer_success_manager.name
                    })
        
        return sorted(at_risk, key=lambda a: a["remaining_budget_minutes"])

Calculating Credits Correctly

The difference between "availability" and "uptime" matters in credit calculations:

def calculate_credit_amount(
    customer_mrr,
    actual_availability_pct,
    sla_target_pct,
    credit_schedule
):
    """
    Calculate the correct SLA credit based on contract terms.
    
    Credit schedules are typically based on the gap between
    actual availability and the SLA threshold — not just 
    whether a breach occurred.
    """
    
    if actual_availability_pct >= sla_target_pct:
        return {
            "credit_amount": 0,
            "credit_pct": 0,
            "reason": "SLA was met — no credit due"
        }
    
    # Determine credit tier based on actual availability
    credit_pct = 0
    applicable_tier = None
    
    for tier in sorted(credit_schedule, key=lambda t: t["min_availability"]):
        if actual_availability_pct >= tier["min_availability"]:
            credit_pct = tier["credit_pct"]
            applicable_tier = tier
    
    # If no tier matched, use the lowest tier
    if applicable_tier is None and credit_schedule:
        lowest_tier = min(credit_schedule, key=lambda t: t["min_availability"])
        credit_pct = lowest_tier["credit_pct"]
    
    credit_amount = customer_mrr * (credit_pct / 100)
    
    return {
        "sla_target_pct": sla_target_pct,
        "actual_availability_pct": actual_availability_pct,
        "credit_pct": credit_pct,
        "credit_amount": round(credit_amount, 2),
        "customer_mrr": customer_mrr,
        "applicable_tier": applicable_tier
    }

# Example credit schedule
example_schedule = [
    {"min_availability": 99.0, "credit_pct": 10},  # 99.0-99.9%
    {"min_availability": 95.0, "credit_pct": 25},  # 95-99.0%
    {"min_availability": 0.0,  "credit_pct": 50},  # Below 95%
]

# Example calculation:
result = calculate_credit_amount(
    customer_mrr=5000,
    actual_availability_pct=99.5,  # SLA target was 99.9%
    sla_target_pct=99.9,
    credit_schedule=example_schedule
)
# Result: 10% credit = $500

How to Handle a Breach Professionally

Immediate Response

## When You Detect an SLA Breach

### Day 0-1 (Immediate)
1. Confirm the breach calculation is accurate
   - Was this caused by scheduled maintenance? (May be excluded per contract)
   - Was it a monitoring error? (Verify with other data sources)
   - Does the downtime calculation method match the contract definition?

2. Do NOT wait for the customer to notice
   - Proactively contact the customer's primary contact
   - "We want to make you aware that [Service] experienced downtime on [dates]
     that will result in an SLA credit for this month."

3. Prepare the credit calculation
   - Have the exact numbers ready before customer contact
   - Include: downtime duration, availability %, credit amount

### Week 1 (Follow-Up)
4. Send formal breach notification with:
   - Incident timeline
   - Root cause analysis
   - Credit amount and how it will be applied
   - Steps being taken to prevent recurrence

5. Offer a call with the customer's technical contact
   - Review the incident together
   - Give them confidence in the remediation steps

The Breach Communication Email

Subject: SLA Credit for [Month] — [Company] Account

[First Name],

I'm writing to inform you that [Service] did not meet our [SLA target]% 
availability commitment during [Month]. Your account experienced 
[downtime duration] of downtime, resulting in [actual availability]% 
availability for the month.

Per our agreement, we are crediting your account [credit amount] 
([credit %]% of your monthly service fee). This credit will appear 
on your next invoice.

**What caused this:**
[2-3 sentence plain-language explanation]

**What we're doing to prevent recurrence:**
- [Specific action 1]
- [Specific action 2]
- [Specific action 3]

We have published a detailed incident report at [link].

We take our reliability commitments seriously and apologize for the 
disruption this caused. I'm available for a call if you'd like to 
discuss further.

[Your name]
Customer Success | [Company]

What Customers Actually Care About

Research into customer churn after SLA breaches reveals that credits alone don't retain customers. What retains customers after a breach:

  1. Proactive communication — Being told before having to ask
  2. Clear explanation — Understanding what happened without jargon
  3. Confidence in prevention — Believable, specific remediation steps
  4. Responsive support — Quick answers to follow-up questions
  5. Financial remedy — Credits or refunds (confirms you take it seriously)

What fails to retain customers after a breach:

  • Reactive communication (customer discovered it themselves)
  • Vague explanation ("infrastructure issue")
  • Generic remediation ("we're improving our systems")
  • Slow follow-up
  • Arguing about whether a breach occurred

Repeated Breaches and Contract Remedies

If breaches are recurring, address the contract situation proactively:

## When Facing a Potential Termination Situation

If a customer has the right to terminate due to repeated breaches:

1. Don't wait for them to exercise it — initiate the conversation
2. Acknowledge the pattern directly: "We haven't met your expectations"
3. Present a credible improvement plan with specific milestones
4. Offer a short-term commitment reduction (e.g., month-to-month) 
   rather than a forced renewal
5. If the breach pattern is genuinely systemic, consider whether the 
   customer's use case fits your reliability capabilities

Note: Some customers are better served by a competitor with different 
infrastructure. Helping them find the right solution, rather than 
retaining them through a relationship that will end badly, preserves 
your reputation.

Conclusion

SLA breaches are business events, not just technical events. The consequences — financial credits, legal risk, customer churn — are real and manageable when handled proactively. The teams that handle breaches best do three things: detect them before customers do (using monitoring), communicate proactively and specifically, and follow through on the remediation commitments they make. AzMonitor's continuous monitoring and historical uptime data makes breach detection and documentation accurate, giving you the foundation to handle breaches professionally rather than reactively.

Tags:SLA breachSLA creditsuptime guaranteecustomer contracts
Back to blog
A
AzMonitor Team
The AzMonitor team writes guides based on experience monitoring millions of endpoints daily across 10,000+ customer environments. Our expertise covers uptime monitoring, SRE practices, and reliability engineering.
Try AzMonitor free

3 monitors free forever · No credit card needed · Set up in 2 minutes

Start monitoring free →