{% extends 'base.html' %} {% load humanize %} {% block title %}IPN Payment Gaps — Unprocessed SasaPay Payments{% endblock %} {% block content %}

⚠️ IPN Payment Gaps

These are SasaPay IPN notifications that arrived but no repayment was created. Total: {{ total_gaps }}

← SasaPay Dashboard 🔧 Recover Payments ⚠️ Unknown Payments
{% if total_gaps == 0 %}
✅ All clear! Every IPN log entry has a matching repayment. No gaps found.
{% else %}
Why does this happen? Common reasons: Use the Recovery Tool to manually re-process any that should have been recorded.
{% for gap in page_obj %} {% endfor %}
📅 Date TransID M-Pesa Ref 💵 Amount 👤 Name BillRef (sent by customer) MSISDN (paying phone) 🔍 Drop Reason
{{ gap.created_at|date:"d M Y" }}
{{ gap.created_at|date:"H:i" }}
{{ gap.trans_id }} {{ gap.mpesa_ref|default:"—" }} KSh {{ gap.amount|floatformat:2|intcomma }} {{ gap.name|default:"—" }} {{ gap.bill_ref|default:"(empty)" }} {% if not gap.bill_ref %} EMPTY {% endif %} {{ gap.msisdn|default:"—" }} {% if gap.note == "—" %} No note (pre-diagnostic) {% elif "no_borrower" in gap.note %} No borrower matched
{{ gap.note }} {% elif "no_active_loan" in gap.note %} No active loan
{{ gap.note }} {% elif "no_balance" in gap.note %} Balance was 0
{{ gap.note }} {% else %} {{ gap.note }} {% endif %}
{% if page_obj.has_other_pages %} {% endif %} {% endif %}
{% endblock %}