See the line
RAISE_APPLICATION_ERROR (-20325, May not add a record with both payment and charge information.');
The quote character at the begin of the message string is missing.
Would have been obvious when formatting code as such in the question or using an editor with syntax highlighting:
RAISE_APPLICATION_ERROR (-20325, 'May not add a record with both payment and charge information.');