{% extends "subscriptions/base.html" %} {% load static %} {% load currency_filters %} {% block title %}Pricing — SwiftPOS{% endblock %} {% block meta_description %}Transparent, affordable pricing for every business size. Start free, upgrade as you grow.{% endblock %} {% block extra_style %} .pricing-hero { text-align: center; padding: 4rem 1.5rem 2rem; background: linear-gradient(135deg, #4c1d95 0%, #7c3aed 60%, #6366f1 100%); color: #fff; } .pricing-hero h1 { font-size: 2.8rem; font-weight: 900; margin-bottom: 0.75rem; } .pricing-hero p { font-size: 1.1rem; opacity: 0.85; max-width: 520px; margin: 0 auto 2rem; } .cycle-tabs { display: inline-flex; background: rgba(255,255,255,0.15); border-radius: 12px; padding: 4px; gap: 2px; flex-wrap: wrap; justify-content: center; } .cycle-tab { padding: 0.45rem 1.1rem; border-radius: 9px; font-size: 0.82rem; font-weight: 600; cursor: pointer; border: none; background: transparent; color: rgba(255,255,255,0.7); transition: all 0.2s; } .cycle-tab.active { background: #fff; color: var(--primary); box-shadow: 0 2px 8px rgba(0,0,0,0.12); } .plans-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; max-width: 1050px; margin: 0 auto; padding: 3rem 1.5rem; } .plan-card { background: #fff; border-radius: 20px; border: 2px solid var(--border); padding: 2rem; transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s; position: relative; overflow: hidden; } .plan-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); } .plan-card.popular { border-color: var(--primary); transform: scale(1.03); } .plan-card.popular:hover { transform: scale(1.03) translateY(-6px); } .popular-badge { position: absolute; top: 0; right: 0; background: linear-gradient(135deg, #7c3aed, #6366f1); color: #fff; font-size: 0.7rem; font-weight: 700; padding: 0.35rem 1rem; border-radius: 0 18px 0 12px; letter-spacing: 0.05em; text-transform: uppercase; } .plan-name { font-size: 1.1rem; font-weight: 700; color: var(--text-dark); margin-bottom: 0.5rem; } .plan-price-wrap { margin: 1.25rem 0; } .plan-price { font-size: 2.4rem; font-weight: 900; color: var(--text-dark); line-height: 1; } .plan-price .sym { font-size: 1.4rem; vertical-align: top; margin-top: 0.35rem; display: inline-block; } .plan-price .per { font-size: 0.82rem; color: var(--text-muted); font-weight: 500; margin-left: 0.25rem; } .plan-desc { font-size: 0.85rem; color: var(--text-muted); margin-bottom: 1.5rem; } .plan-features { list-style: none; display: flex; flex-direction: column; gap: 0.6rem; margin-bottom: 1.75rem; } .plan-features li { display: flex; align-items: center; gap: 0.6rem; font-size: 0.83rem; } .plan-features .check { color: var(--success); font-size: 0.75rem; } .plan-features .cross { color: #cbd5e1; font-size: 0.75rem; } .plan-features .locked { color: var(--text-muted); } .btn-plan { display: block; width: 100%; padding: 0.8rem; border-radius: 12px; font-size: 0.9rem; font-weight: 700; text-align: center; text-decoration: none; cursor: pointer; border: none; transition: opacity 0.2s, transform 0.15s; font-family: inherit; } .btn-plan-primary { background: linear-gradient(135deg, #7c3aed, #6366f1); color: #fff; } .btn-plan-primary:hover { opacity: 0.9; transform: translateY(-1px); color:#fff; } .btn-plan-outline { background: transparent; border: 1.5px solid var(--border); color: var(--text-dark); } .btn-plan-outline:hover { border-color: var(--primary); color: var(--primary); } .limit-row { display: flex; justify-content: space-between; font-size: 0.8rem; border-top: 1px solid var(--border); padding-top: 1rem; margin-top: 0.5rem; color: var(--text-muted); flex-wrap: wrap; gap: 0.5rem; } .limit-badge { background: var(--primary-light); color: var(--primary); padding: 0.15rem 0.6rem; border-radius: 20px; font-size: 0.72rem; font-weight: 600; } .faq-section { max-width: 700px; margin: 0 auto; padding: 2rem 1.5rem 4rem; } .faq-title { font-size: 1.6rem; font-weight: 800; text-align: center; margin-bottom: 2rem; } .faq-item { border: 1px solid var(--border); border-radius: 12px; margin-bottom: 1rem; overflow: hidden; } .faq-q { padding: 1rem 1.25rem; font-weight: 600; font-size: 0.9rem; cursor: pointer; display: flex; justify-content: space-between; align-items: center; } .faq-a { padding: 0 1.25rem 1rem; font-size: 0.85rem; color: var(--text-muted); line-height: 1.6; display: none; } .faq-item.open .faq-a { display: block; } .faq-item.open .faq-q i { transform: rotate(180deg); } .faq-q i { transition: transform 0.2s; } {% endblock %} {% block content %}

Simple, transparent pricing

Start free for 3 days. No credit card required. Cancel anytime.

{% for plan in plans %} {% with is_popular=forloop.counter0 %}
{% if forloop.counter == 2 %} {% endif %}
{{ plan.name }}
{{ plan.price_monthly|currency:0 }}/month
Start Free Trial
Max branches: {{ plan.max_branches }} {% if plan.feature_android_app %} Android App{% endif %}
{% endwith %} {% endfor %} {% if not plans %}

Plans coming soon. Start your free trial

{% endif %}

Frequently Asked Questions

Is the 3-day trial really free?
Yes! No credit card required. You get full access to the system during your trial period.
Can I upgrade or downgrade my plan?
Yes. Upgrades take effect immediately after payment. Downgrades are applied at the end of your current billing cycle.
What payment methods are accepted?
We accept all Nigerian bank cards, bank transfers, USSD, and mobile money via Monnify — a CBN-licensed payment gateway.
What happens when my subscription expires?
You'll receive reminder emails 3 days and 1 day before expiry. After expiry, you'll be redirected to renew your subscription. Your data is never deleted.
{% endblock %} {% block extra_js %} {% endblock %}