API – Reverse Payments


Payment reversal in LoanPro will mark a payment as reversed, and will then optionally forward it on to payment processors for voiding. This article explains how to reverse payments through the API, but we also have one explaining how to edit or reverse payments with the UI.

Voiding Payments

To void a payment, send a POST request to the endpoint Loans({loanid})/VoidPayment({payId}). Replace {loanid} with the id of the associated loan, and {payId} with the id of the payment to reverse.


{payId} is not the display id of the payment, but is the payment system Id. The {payId} can be found by sending a GET request to the url https://loanpro.simnang.com/api/public/api/1/odata.svc/Loans(id=#)/Payments. Substitute the # for the id of the specific loan you are working in.


Below is an example:

POST https://loanpro.simnang.com/api/public/api/1/Loans(209)/VoidPayment(105)


Below is a sample payload:

"reverseReason": "payment.reverse.checkBounce",
"comments": "The check didn't go through with WellsFargo",
"nachaReturnCode": "nacha.returnCode.r05",
"__logOnly": true
  • reverseReason (required)
    • This field gives is a collection value that describes the reverse reason.
    • To get a full list of options, do GET https://loanpro.simnang.com/api/public/api/1/collections(payment.reverse)/items
  • comments (required)
    • This is comments describing more about why the reversal happened
  • nachaReturnCode (optional)
    • This specifies a NACHA return code to be sent to the payment processor; upon receiving a code the processor may or may not perform an action – that action is not determined by LoanPro
    • If not specified, no NACHA return code will be sent to the payment processor
  • __logOnly (optional)
    • If set to “true”, then no information will be forwarded to payment processors – including NACHA return codes
    • If set to “false”, voiding information will be forwarded to payment processors
    • Defaults to “false” if not specified

StackBlitz Example

Many of our articles use StackBlitz examples like this. These examples are like a window into a REST client right here in your browser. The window is divided into two sides. Developers can use info in the editor on the left side when configuring your API integration, and the right side shows a preview of a REST client. Click 'Preview' on the bottom, and you'll only see the REST client.

The entire request is set up and connected to a demo API tenant in LMS. Just scroll down and click 'send' and you should get a 200 response. If you want to get some practice with error codes, try editing the endpoint, headers, method and payload to see what responses you get.

How did we do?

Powered by HelpDocs (opens in a new tab)