Billing and Reviews
CodePeel uses a review-based billing model. Every PR review, IDE review, MCP tool call, and chat interaction consumes reviews from your monthly quota. Plans are managed through Polar, our payment provider.
Plans
| Free | Pro | Max | |
|---|---|---|---|
| Monthly price | $0 | $9.99/user/month | $24.99/user/month |
| Annual price | — | $99.99/year (save 16.6%) | $249.99/year (save 16.6%) |
| Reviews per month | 30 | 500 | Unlimited* |
| Rate limit | 20 requests/min | 20 requests/min | 20 requests/min |
| Auto-fix PRs | No | Yes | Yes |
| Auto-test generation | No | Yes | Yes |
| Custom regex rules | No | Yes | Yes |
| Private repos | Yes | Yes | Yes |
| Premium AI models | No | No | Yes |
| Priority support | No | No | Yes |
*Max tier has an abuse protection cap of 5,000 reviews/month (far beyond normal usage).
All plans include: inline PR comments, walkthrough summaries, health score, secret scanning, SAST analysis, architecture review, sequence diagrams, incremental reviews, VS Code extension, MCP server, chat commands, pre-merge checks.
How Review Deductions Work
Reviews are consumed when a PR is analyzed. The cost depends on the total diff size (additions + deletions across all files):
| Diff size (lines changed) | Reviews consumed |
|---|---|
| 1 – 100 lines | 1 review |
| 101 – 500 lines | 2 reviews |
| 501 – 2,000 lines | 3 reviews |
| 2,001+ lines | 5 reviews |
This tiered model ensures small, focused PRs are inexpensive while large PRs requiring more analysis are priced proportionally.
What Counts as a Review
| Action | Reviews consumed |
|---|---|
| GitHub PR review (automatic) | 1–5 based on diff size |
| VS Code extension review | 1 review |
MCP review_code tool call | 1 review |
MCP fix_code tool call | 1 review |
MCP ask_codepeel tool call | 1 review |
MCP check_credits tool call | 0 (free) |
@codepeel chat (questions, natural language) | 1 review |
@codepeel learn:, ignore:, resolve, init | 0 (free shortcuts) |
All review sources draw from the same monthly pool.
Model Credit Costs
CodePeel currently uses free-tier AI providers for all models. Every supported model costs 0 credits per review — switching models does not change cost. Premium model tiers may be introduced later for Max subscribers.
Failed Review Refunds
GitHub PR reviews: If a review fails due to AI error, timeout, or service unavailability, the deduction is automatically refunded.
IDE / MCP reviews: These routes do not refund on failure. If your IDE review errors mid-stream, the review is still counted against your quota. These endpoints have shorter timeouts and no automatic retry.
How It Works
Subscription Lifecycle
- Select a plan from the billing page
- Redirected to Polar checkout
- Polar processes payment
- CodePeel updates your account: tier, quota, subscription status
- Usage counter resets to 0 on upgrade
- On the 1st of each month, usage counters reset
Quota Enforcement
When a review is triggered:
- System checks your tier and reviews used against your monthly quota
- If reviews remain, the review proceeds
- If quota exhausted, the review is blocked with a comment on the PR
- Max tier checks against the 5,000 abuse-protection cap
Per-minute Rate Limiting
Reviews are limited to 20 per minute. When the limit is reached, subsequent reviews are queued until a slot opens.
- All tiers: 20 requests/minute for review/fixes/summarize, 15/minute for chat
Rate limits degrade gracefully — if a rate-limit check fails, the review proceeds rather than blocking.
Monthly Quota Reset
Usage counters reset on the 1st of each month. Max-tier users are skipped (unlimited, but capped at the 5,000 abuse-protection limit).
Checking Your Usage
Navigate to Billing in the dashboard sidebar. Two primary cards:
Current Plan — active tier, monthly price, next payment date. Warning if scheduled for cancellation.
Usage Summary — reviews consumed / total quota with progress bar:
- Blue: under 70% usage
- Yellow: 70–89% usage
- Red: 90%+ or quota exhausted
Max tier shows total reviews consumed without a cap indicator.
Programmatic Access
MCP:
check_credits
API:
GET /api/ide/credits/balance
Authorization: Bearer <token>
Response:
{
"tier": "pro",
"monthlyQuota": 500,
"reviewsUsedThisPeriod": 127,
"reviewsRemainingThisPeriod": 373,
"usageResetAt": "2026-06-01T00:00:00.000Z"
}
Upgrading Your Plan
- Go to Billing in sidebar
- Click Upgrade (to Pro or Max)
- Complete payment on Polar checkout
- Redirected back with new plan active immediately
- Usage counter resets to 0 on upgrade
Supported subscriptions: pro_subscription, pro_yearly_subscription, max_subscription, max_yearly_subscription.
Switching Plans
- Cancel current plan from billing page
- Current plan stays active until period ends
- Subscribe to new plan
Usage counter resets on switch. No access loss during transition.
When you switch between plans, your tier, quota, and billing interval update automatically.
Cancelling Your Plan
- Go to Billing → Manage Plan → Cancel Plan
- Confirm cancellation
After cancellation:
- Plan stays active until period end
- "Cancels at period end" indicator shown
- After period ends: account downgrades to Free
- All review history, settings, learnings, configuration preserved
- Quota reverts to 30 reviews/month
Uncancelling: Resubscribe before the period ends. Active status is restored automatically.
Payment Provider
CodePeel uses Polar for checkout, subscriptions, invoicing, payment methods, and refunds.
Customer Portal
Paid subscribers can access Polar portal to:
- Update payment method
- View/download invoices
- See payment history
- Manage subscription directly
Click Manage in Payment Method section or Polar Portal in plan management panel.
Supported Payment Methods
Credit/debit cards via Polar. CodePeel stores no payment card information.
Invoices & Receipts
Available through Polar customer portal. Downloadable as PDF for expense reporting.
Billing History
Billing page shows transaction history from CodePeel records and Polar API.
| Type | Description |
|---|---|
| Payment | Subscription payment (monthly/annual renewal) |
| Subscription canceled | Plan cancellation event |
| Plan change | Tier upgrade/downgrade |
| Refund | Full or partial payment refund |
Status badges: Active (current), Paid (previous cycle), Canceled, Refunded, Partial Refund, Failed (declined), Pending.
Paginated, refreshable via Refresh button (triggers Polar sync).
When Reviews Run Out
GitHub PR Reviews
- Review not processed
- Comment posted: "CodePeel is paused — monthly quota exceeded"
- Link to upgrade
- Resumes automatically on 1st of next month
IDE / MCP Reviews
- 402 HTTP response with a quota error code
/api/ide/reviewreturnsCREDITS_EXHAUSTED(free/pro/max caps)/api/ide/chatand/api/fixesreturnREVIEWS_EXHAUSTED
- Includes tier, reviews used, quota
- Free: "No reviews remaining. Upgrade to Pro for 500 reviews/month."
- Pro: "No reviews remaining this period. Reviews reset at start of next billing cycle."
- Max: "Monthly review cap reached (5000). Contact support if you need more."
Payment Failures
If payment declined, subscription enters past_due:
- Warning banner on billing page
- Reviews blocked: "Payment failed. Update payment method at codepeel.com/app/billing"
- Update card → charge succeeds → reviews resume
Private Repositories
All repositories (public and private) are available on all tiers. There is no repository limit or private repo restriction on any plan.
Team Billing
Shared installations use author-based billing. Each developer billed for PRs they author:
| Scenario | Who is Charged |
|---|---|
| Team member opens PR | Team member's quota |
| External contributor (no CodePeel account) | Installation owner's quota |
| Owner opens PR | Owner's quota |
See Teams documentation for setup details.
Subscription Sync
Billing page includes manual sync to reconcile with Polar:
- Just subscribed but plan not active
- Wrong tier after plan change
Click Refresh to trigger sync. Does not reset usage counters (prevents abuse).
Troubleshooting
"No reviews remaining" but I just subscribed
- Click Refresh on billing page
- Wait 10 seconds, reload
- Background sync corrects within minutes
Payment failed banner won't go away
- Click Update Card on banner or Manage in Payment Method
- Update payment method in Polar portal
- Retry charge succeeds → banner clears
Reviews not resetting on the 1st
- Check the
usageResetAtdate in the API response - Max tier is skipped by the reset (unlimited, capped at 5,000)
- If the reset did not run, contact support for a manual reset
Checkout redirects but plan not active
- Wait 2–3 minutes for background sync
- Click Refresh
- Contact support with user ID if stuck
Rate limited but quota shows reviews remaining Rate limits and monthly quotas are independent. You can have monthly quota remaining but be rate-limited in the moment. Wait for indicated time — review proceeds automatically.
FAQ
Do unused reviews roll over? No. Quota resets to 0 on the 1st of each month. No rollover.
Does VS Code extension use separate quota? No. All sources (GitHub PRs, VS Code, MCP, chat) draw from same monthly pool.
What happens if I downgrade to Free? All history, settings, learnings, configuration preserved. Quota reverts to 30/month. Lose Pro/Max features (auto-fix, auto-test, custom rules).
Can I get a refund? Refunds handled through Polar. Appears in billing history as "Refunded" or "Partial Refund". Contact support if charged incorrectly.
How is annual plan billed? Full year upfront ($99.99 Pro, $249.99 Max). Monthly quota still resets every month (500/month Pro, unlimited Max). Annual price = 16.6% discount vs monthly.
Who gets charged on shared repos? PR author's CodePeel account. External contributors → owner fallback. See Team Billing.
Feature Comparison by Plan
| Feature | Free | Pro | Max |
|---|---|---|---|
| Inline PR comments | Yes | Yes | Yes |
| Walkthrough summary | Yes | Yes | Yes |
| Health score | Yes | Yes | Yes |
| Secret scanning | Yes | Yes | Yes |
| SAST analysis | Yes | Yes | Yes |
| Architecture review | Yes | Yes | Yes |
| Sequence diagrams | Yes | Yes | Yes |
| Incremental reviews | Yes | Yes | Yes |
| VS Code extension | Yes | Yes | Yes |
| MCP server | Yes | Yes | Yes |
| Chat commands | Yes | Yes | Yes |
| Auto-fix PRs | No | Yes | Yes |
| Auto-test generation | No | Yes | Yes |
| Custom regex rules | No | Yes | Yes |
| Private repositories | Yes | Yes | Yes |
| Pre-merge checks | Yes | Yes | Yes |
| Full repo context | No | Yes | Yes |
| Premium AI models | No | No | Yes |
| Priority support | No | No | Yes |
Custom rules in .codepeel.yml are silently skipped on Free tier. Upgrade to enable.
API Reference
Check Balance
GET /api/ide/credits/balance
Authorization: Bearer <token>
Returns tier, quota, usage, subscription status. Triggers background sync if inconsistent with Polar.
Sync Subscription
POST /api/billing/sync
Authorization: Bearer <token>
Reconciles account with Polar. Updates tier, status, period end. Does not reset usage.
Get Billing History
GET /api/billing/transactions?page=1&limit=20
Authorization: Bearer <token>
Paginated history from Polar.
Cancel Subscription
POST /api/billing/cancel
Authorization: Bearer <token>
Schedules cancellation at the end of the current billing period. Access retained until then.
Open Customer Portal
POST /api/billing/portal
Authorization: Bearer <token>
Returns Polar portal session URL.
Create Checkout Session
POST /api/checkout/polar
Authorization: Bearer <token>
Content-Type: application/json
{ "type": "pro_subscription" }
Types: pro_subscription, pro_yearly_subscription, max_subscription, max_yearly_subscription.
Related Documentation
- Configuration —
.codepeel.ymlsettings including custom rules (Pro/Max only) - MCP Server — Programmatic access to reviews, fixes, and chat
- Pre-merge Checks — Quality gates that block merges