Analyze your 60-day stats and find out how many orders you need to recover your level.
All orders created (active, completed, and cancelled).
Orders cancelled by you or the buyer.
Minimum for Level 1/2/Top Rated is 90%.
Current Completion Rate
—
Status
—
Action Required to Hit Target
—
Consecutive completed orders needed without new cancellations.
Understanding Your Order Completion Rate (OCR)
On Fiverr, the Order Completion Rate is one of the most critical metrics for sellers. It measures the percentage of orders you successfully complete without cancellation over a rolling 60-day period. Maintaining this metric above 90% is mandatory for achieving and keeping Level 1, Level 2, and Top Rated Seller status.
How is it Calculated?
The formula Fiverr uses is relatively straightforward but can be unforgiving:
(Total Orders – Cancelled Orders) / Total Orders × 100
For example, if you have received 50 orders in the last 60 days and 5 were cancelled, your calculation is: (50 – 5) / 50 = 0.90, or 90%.
Why Did My Rate Drop?
Cancellations can happen for various reasons, but Fiverr generally treats all cancellations equally regarding your stats, regardless of whether the buyer or seller initiated it (with very few exceptions for CS-voided cancellations). Common causes include:
Buyers ordering by mistake.
Unclear gig descriptions leading to disputes.
Unable to meet the deadline or quality expectations.
Mutual cancellations.
The 60-Day Rolling Window
It is crucial to remember that this metric is based on the last 60 days. This means that a cancellation that happened 61 days ago will drop off your record today. This can cause your rate to fluctuate daily even if you don't get new orders. If a large number of completed orders drop out of the 60-day window while a recent cancellation remains, your percentage will drop because the denominator (total orders) decreases.
How to Use This Calculator
If your rate has dropped below 90%, it can be stressful to figure out exactly how much work is needed to fix it. This tool calculates:
Current Rate: Your exact percentage right now.
Recovery Plan: The exact number of consecutive orders you need to complete to get back to your target (e.g., 90%).
Buffer: If you are currently safe, it estimates how many cancellations you could technically afford before dropping below the threshold.
function calculateFiverrStats() {
// 1. Get input values
var totalInput = document.getElementById('totalOrders').value;
var cancelledInput = document.getElementById('cancelledOrders').value;
var targetInput = document.getElementById('targetRate').value;
// 2. Validate inputs
var total = parseFloat(totalInput);
var cancelled = parseFloat(cancelledInput);
var target = parseFloat(targetInput);
if (isNaN(total) || total < 1) {
alert("Please enter a valid number of Total Orders (must be at least 1).");
return;
}
if (isNaN(cancelled) || cancelled < 0) {
cancelled = 0;
}
if (isNaN(target) || target 100) {
alert("Please enter a valid Target Rate between 1 and 100.");
return;
}
if (cancelled > total) {
alert("Cancelled orders cannot be higher than Total orders.");
return;
}
// 3. Calculate Current Rate
var completed = total – cancelled;
var currentRate = (completed / total) * 100;
// 4. Display Results Container
document.getElementById('resultsArea').style.display = 'block';
// 5. Update Current Rate Display
var rateDisplay = document.getElementById('currentRateDisplay');
rateDisplay.innerHTML = currentRate.toFixed(2) + '%';
var statusMsg = document.getElementById('statusMessage');
var fixBox = document.getElementById('fixBox');
var ordersNeededDisplay = document.getElementById('ordersNeeded');
var fixLabel = fixBox.querySelector('.result-label');
// 6. Logic for Status and Recovery
if (currentRate >= target) {
// Case: Rate is good
rateDisplay.className = "result-value status-success";
statusMsg.innerHTML = "Safe! You are above the target.";
statusMsg.className = "result-value status-success";
// Calculate Buffer: How many cancellations allowed before dropping below target?
// Formula: (Completed) / (Total + NewCancellations) >= Target/100
// Completed >= Target/100 * (Total + NewCancellations)
// Completed / (Target/100) >= Total + NewCancellations
// (Completed / (Target/100)) – Total >= NewCancellations
var targetDecimal = target / 100;
var maxCancellations = Math.floor((completed / targetDecimal) – total);
if (maxCancellations = 99.99) {
ordersNeededDisplay.innerHTML = "Impossible to reach 100% until cancellations drop off the 60-day window.";
} else {
var numerator = (targetDecimal * total) – completed;
var denominator = 1 – targetDecimal;
var x = numerator / denominator;
var needed = Math.ceil(x);
// Edge case handling for floating point math
if (needed < 0) needed = 0;
fixLabel.innerHTML = "Recovery Plan";
ordersNeededDisplay.innerHTML = "You need " + needed + " consecutive completed orders to reach " + target + "%.";
ordersNeededDisplay.className = "result-value status-danger"; // Red text
}
}
}