Stripe Reconciliation
Stripe is our card payments processor. The way we implemented the payment handling is not the most accuarate, or has changed since we first did it, and overy occasionally we don't get notified when a payment happens. We aren't sure why; this may be because a payment is blocked by their bank for anti-fraud, or there is a network error, and the payment "goes through" after the user has left the page.
In these cases we run a task to reconcile recent payments and see if we missed any. If an entry is paid, but OpenTrack doesn't know about it, we can manually complete their competution entry or membership renewal.
You will need access to our Stripe dashboard to work on these.
Running the Task
- Go to the Stripe Balance tool.
- Enter the number of days in the past you want to search from.
- Wait for the task to complete and send a report to your inbox.
Reconciling Missed Payments
Check the entries made by the user in question on the individual entry admin page and confirm they have only completed one entry for the competition in question. Search the user up via their email address on the Stripe dashboard, and identify the duplicate payments. Confirm which payment is duplicate by the time stamp (usually the first payment is the 'duplicate' as it was not correctly registered, and the second one was which marked the entry as complete') Click the refund button, reverse & refund the relevant fees, and confirm the refund. Finally inform the user that the they were charged twice, and a refund has been processed.
Reconciling Unmatched Payments
Payments sometimes will show as unmatched, due to the page timing out and the user not realising. To fix this you must find the payment on the Stripe dashboard and the entry on the individual entry admin page. Mark the entry as paid, and create a payment record in admin with the data from Stripe. Finally, inform the user that their entry has been confirmed and ensure the entry is resync to add the athlete to the competitor list on the competition.
Future improvements
Moving to a "webhook approach", where Stripe hits our server when a payment clears and we then take all the right actions, should allegedly fix this. Although we probably ought to have a reconciliation report anyway.
WIP JD 16/5/22