{% extends "base.html" %} {% block title %}Billing{% endblock %} {% block content %}

Billing

{% if member_view %}

This workspace ({{ owner.email }}) is on the {{ plan.name }} plan{% if trial.active %} (trial, {{ trial.days_left }} days left){% endif %}. Only the workspace owner can change the plan or payment details.

Monitors
{{ plan.monitors }}
Servers
{{ plan.servers }}
Check interval
every {{ plan.min_interval }} min
History
{{ plan.retention_days }} days
Status pages
{{ plan.status_pages }}
Team seats
{{ plan.team_seats if plan.team_seats < 999 else 'unlimited' }}
{% else %}

You're on {{ plan.name }}{% if trial.active %} (trial · {{ trial.days_left }} day{{ 's' if trial.days_left != 1 }} left){% endif %}: {{ plan.monitors }} monitors, {{ plan.servers }} server{{ 's' if plan.servers != 1 }}, checks every {{ plan.min_interval }}+ min, {{ plan.retention_days }} days of history.

{% if plan.addons %}

Add-ons: {% for k, q in plan.addons.items() %}{{ addons[k].name }}{% if q > 1 %} ×{{ q }}{% endif %}{{ ', ' if not loop.last }}{% endfor %} (+${{ plan.addons_price }}/mo).

{% endif %} {% if request.query_params.get('success') %}
Payment received. Your plan updates within a few seconds — refresh if you don't see it yet.
{% endif %} {% if user.subscription_status == 'past_due' %}
Your last payment failed.
to keep your {{ plan.name }} plan.
{% endif %}
{% for key, p in plans.items() %}
{{ p.blurb }}

{{ p.name }}

${{ p.price }}/month
{% if p.trial_days %}
{{ p.trial_days }}-day free trial, no card
{% endif %}
{% if key == user.plan and not trial.active %}Current plan {% elif key == user.plan and trial.active %}
{% elif key == 'free' %} {% if billing_enabled and user.paddle_subscription_id %}
{% else %}Trials fall back here automatically{% endif %} {% else %}
{% if p.trial_days and key not in trial.used and not user.paddle_subscription_id %}
{% elif p.trial_days and key in trial.used %}
trial used
{% endif %} {% endif %}
{% endfor %}
Self-hosted Run Vigil on your own host
The complete platform, Enterprise limits, your data stays with you. $49/month per instance, signed licence, one-command install and updates, works air-gapped.
My licencesInstall guide
{% set _pk = 'enterprise' if user.plan == 'business' else user.plan %}

Add-ons Pro & Enterprise

Need a little more than your plan? Add packs on top of {{ base_plan.name if _pk in addon_plans else 'Pro or Enterprise' }}; they're billed with your subscription, prorated from today, and you can remove them any time.{% if _pk in addon_plans and current_addons %} Current add-ons: ${{ addons_total }}/month on top of ${{ base_plan.price }}.{% endif %}

{% if _pk in addon_plans %}
{% for k, a in addons.items() %}{% endfor %}
PackWhat you getPricePacksSubtotal
{{ a.name }}{{ a.blurb }}${{ a.price }}/mo ${{ a.price * current_addons.get(k, 0) }}
Add-ons total${{ addons_total }}
Monthly with {{ base_plan.name }} (${{ base_plan.price }})${{ base_plan.price + addons_total }}
{% if addons_live %}Charged pro rata now, then monthly with your plan.{% elif trial.active %}Add-ons attach to a paid subscription.{% else %}Manually activated plan: we add packs by hand within a day.{% endif %}
{% else %}
{% for k, a in addons.items() %}{{ a.name }} · ${{ a.price }}/mo{% endfor %}

{% if user.plan == 'custom' %}On a custom plan you pick modules below instead.{% else %}Start with Pro or Enterprise above, then add packs here.{% endif %}

{% endif %}
{% if referral %}

Refer a team, get a month free

Share your link. Anyone who signs up through it gets a 20-day Pro trial instead of 10, and when they subscribe your next invoice is on us. No limit.

{{ referral.signups }} signup{{ 's' if referral.signups != 1 }} · {{ referral.paying }} paying · {{ referral.credits }} free month{{ 's' if referral.credits != 1 }} waiting{% if referral.credits and not addons_live %} (applied to your first invoice when you subscribe){% endif %}
{% endif %}
{% with action="/app/billing/checkout", submit_label=("Switch to this custom plan" if user.plan == 'custom' else "Checkout custom plan"), disabled=False, note=("Your current custom plan" if user.plan == 'custom' else None) %}{% include "_custom_builder.html" %}{% endwith %}
{% if billing_enabled and user.paddle_customer_id %}

  Billing is handled by Paddle.com, our merchant of record.

{% elif not billing_enabled %}

Card payments are being enabled. Trials work today; to buy a plan now, email hello@puzaricloud.in and we'll activate it the same day.

{% else %}

Prices in USD, billed monthly; Paddle.com is our merchant of record and adds local tax at checkout where required. Cancel anytime.

{% endif %} {% endif %} {% endblock %}