How do I find a repeating pattern of unknown length and start within a string
From your description, it sounds like autocorrelation could be a good initial step to identify the frequency. Autocorrelation is basically the product of the sequence with itself shifted at 0, 1, 2, 3, and so forth. If a client tends to pay monthly, you will see the first positive bump around 4, because that is where each payment aligns with the payment after it. Note that this will work irrespective of the start of the sequence, and is even resilient to some noise. Even Excel seems to have an autocorrelation function. 

Of course, you could refine this further with other steps, and/or try this on different windows (in case the patter changes over time).