An example of a neurostimulation system may include a storage device to store a stimulation waveform, a programming control circuit to generate a plurality of stimulation parameters controlling delivery of neurostimulation pulses according to the stimulation waveform, and waveform definition circuit configured to create and adjust the stimulation waveform. The waveform definition circuit includes a charge recovery module that may include a stimulation to receive the stimulation waveform including charge injection phases, a charge recovery scheme input to receive a charge recovery scheme, and a waveform adjuster configured to identify a need for recovering charges injected during the charge injection phases and adjust the received stimulation waveform by automatically inserting charge recovery phases into the received stimulation waveform based on the identified need for recovering the injected charges and the received charge recovery scheme.