Challenge
Hundreds of donors a day were charged by hand, one card at a time against a payment terminal, in work that took hours and sometimes days. An amount typed by hand, a merchant account picked by hand, and manual marking of who had already been collected. In an institution that lives on recurring giving, a double or incorrect charge is not an operational glitch but a breach of donor trust.
Solution
One daily scenario that pulls the payments now due from Salesforce, sends them to SOLA for processing and writes the result back to the record. The first action of every run is not a data operation: a code module checks whether today is Shabbat or a holiday, and if it is, the run stops. Every payment is marked pending before it goes out, travels as a token rather than a card number, and returns to a retry cycle with a ceiling that lives in configuration.
Result
11,673 donations collected out of 13,535 unique payments, with the retry ladder recovering 125 of them after a first decline. 18,578 charge attempts and zero technical failures. Collecting a full day takes 2 minutes 42 seconds at the median. In production for about six months.