{% extends 'base.html' %} {% load humanize %} {% block title %}SasaPay Payment Issues{% endblock %} {% block content %}
Payments that could not be auto-processed â review and resolve them here.
| đ Date | đĩ Amount (KES) | đ¤ Paid By | đ Paying Phone (MSISDN) | đ BillRef entered | M-Pesa Ref | âšī¸ Reason | Status | Actions |
|---|---|---|---|---|---|---|---|---|
|
{{ p.created_at|date:"d M Y" }} {{ p.created_at|date:"H:i" }} |
{{ p.amount|floatformat:2|intcomma }} | {{ p.paid_by|default:"â" }} | {{ p.msisdn|default:"â" }} |
{{ p.bill_ref|default:"(empty)" }}
{% if not p.bill_ref %}
EMPTY
{% endif %}
|
{{ p.reference|default:"â" }} |
{{ p.notes|truncatechars:80 }} | {% if p.resolved %} Resolved {% else %} Pending {% endif %} |
{% if not p.resolved %}
|
|
â
No unmatched paymentsEvery SasaPay payment was matched to a borrower. |
||||||||
254718523398 vs +254718523398.python manage.py normalise_phone_numbers --apply, then re-match.| đ Date | TransID | M-Pesa Ref | đĩ Amount | đ¤ Name | đ BillRef entered | đ MSISDN | đ Drop Reason |
|---|---|---|---|---|---|---|---|
|
{{ gap.created_at|date:"d M Y" }} {{ gap.created_at|date:"H:i" }} |
{{ gap.trans_id }} |
{{ gap.mpesa_ref }} |
KSh {{ gap.amount|floatformat:2|intcomma }} | {{ gap.name }} |
{{ gap.bill_ref|default:"(empty)" }}
{% if not gap.bill_ref %}
EMPTY
{% endif %}
|
{{ gap.msisdn }} |
{% if gap.raw_status == 'no_match' %}
No borrower matched
{% elif gap.raw_status == 'no_loan' %}
No active loan
{% elif gap.raw_status == 'no_balance' %}
Loan already paid
{% elif gap.raw_status == 'failed' %}
Processing error
{% elif gap.raw_status == 'pending' %}
Stuck pending
{% endif %}
{% if gap.note != 'â' %}
{{ gap.note|truncatechars:100 }} {% endif %} |
|
â
No IPN gaps foundEvery IPN that arrived was processed into a repayment. |
|||||||