API – Processing a Payment

Process a Payment - Processing a payment in LoanPro LMS will initiate a transaction that will actually pull money from the customer's card or account. This will create a record of the transaction just like logging a payment, but will also pull money. This type of payment should be used only if you want LoanPro LMS to initiate a transaction that will actually pull money from the customer's card or account.

Introduction

Processing a payment is integral to your lending operation, so LoanPro lets you do it either in the UI or though the API. Processing payments can be done through the API by sending a PUT request to the loan on which you wish to process the payment. This article is very similar to API – Logging a Payment (payments that will only be logged in LoanPro, but no funds will be transferred from the borrower). Please refer to that article if you are only logging a payment.  This article also won’t cover payments that are split or duplicated across linked loans. It also assumes you already have an existing loan.  If not, see Creating a Loan with the API.

To process a payment on a loan, you will need to send a PUT request to the url of the desired loan. For example, to process a payment on the loan with the id 515, the url would be: https://loanpro.simnang.com/api/public/api/1/odata.svc/Loans(515).

Request body

Below is a sample request for processing a payment

{
  "Payments": {
    "results": [
      {
  "selectedProcessor": "1",
  "paymentMethodId": 3,
  "early": 0,
"echeckAuthType": "payment.echeckauth.WEB",
"amount": "10",
"date": "2017-05-26",
"info": "05/26/2017 Credit/Debit Card",
"paymentTypeId": 1,
"active": 1,
"resetPastDue": 0,
"payoffPayment": false,
"CustomFieldValues":{
"results":[
{
"customFieldId": 38,
"customFieldValue": "132"
}
]
},
"_saveProfile": 0,
"extra": "payment.extra.tx.classic",
"__processorName": "{\"id\":\"115\",\"key\":\"anet\",\"name\":\"asdf\",\"default\":\"0\"}",
"paymentAccountId": 371,
"chargeFeeType": "loan.cardfee.types.2",
"chargeFeeAmount": "10",
"chargeFeePercentage": "5",
"payoffFlag": 0
}
    ]
  }
}

  • selectedProcessor – Id of selected processor
    • Determined by tenant settings (Settings > Company > Merchant > PCI Wallet). Choose the type of processor (Debit/Credit Card, Bank Account/ACH (USA), or Bank Account/EFT (Canada)), then find the ID next to the processor name.
  • paymentMethodId – The ID of the payment method to use for the payment
    • Determined by tenant settings (Settings > Loan > Payments > Methods) Find the ID on the left hand side of the payment method being used. For more information on payment methods see the article Add a new payment method
  • early – Assigns the Early Payment setting. For more information see the Early Payment section of the article on how to Log a payment.
  • echeckAuthType – The echeck authorization type for echeck payments. See Payment Collections
  • amount – The amount of the payment
  • date – The date the payment will be applied on (format YYYY-MM-DD)
  • info – Human readable information describing the payment
  • paymentTypeId – The ID of the Payment Type (waterfall application of the payment)
    • Determined by tenant settings (Settings > Loan > Payment > Types) Find the ID on the left hand side of the payment type being used.
  • active – Should be a 1
  • resetPastDue – Whether or not the payment should reset the amount past due (0 = no, 1 = yes)
  • payoffPayment – Whether or not it is a payoff payment (True or False)
  • CustomFieldValues – Any custom field values for the payment. See API – Custom Fields
  • _saveProfile – Set this to “1” if specifying a new payment process you want to save. Zero is do not save.
  • extra – How extra is applied. (Must match the Loan Setup Between Periods/Transactions value). See Payment Collections for detailed information and available options
  • __processorName – This is a stringified-JSON object with the ID, key, name, and default field of the payment processor
    • Determined by tenant settings (Settings > Company > Merchant > PCI Wallet). Choose the type of processor (Debit/Credit Card, Bank Account/ACH (USA), or Bank Account/EFT (Canada)), then find the ID next to the processor name. The Key is the type of processor being used and is "anet" for credit/debit cards, "nacha" for bank accounts processed through NACHA, and "echeck" for bank accounts processed through an ACH processor. The Name is the processor being used and is found in the same location as the ID. The Default corresponds to the default payment processor assigned under the company settings. Assign a value of "1" if you are using the default processor, and "0" if you are using any processor that is not the default.
  • paymentAccountId - Determined by customer's payment profile inside of a loan (Loan > Customer > Payment Profiles) Find the ID on the left hand side of the payment profile being used.
  • cardFeeType – The type of the card fee to apply. See Payment Collections for detailed information
  • cardFeeAmount – The flat amount of the card fee
  • cardFeePercent – The percentage of the card fee
  • payoffFlag – Flag for payoff payments. (0 = no, 1 = yes)

Other Fields that are available:

There are many other fields available, most of which are automatically set by the system. This section will cover them. Fields that are automatically set do not need to be sent by an application using the API, rather, they are evaluated on the server and sent back to give more information about a payment.

  • id – The ID of the payment (automatically set)
  • displayId – The display ID of the payment (how it will be identified in the system; automatically set)
  • priorcutoff – Whether or not it is prior to the tenant cutoff date (automatically set)
  • beforeAmountPastDue – The amount past due before the payment (automatically set)
  • beforeDaysPastDue – The days past due before the payment (automatically set)
  • beforePayoff – The payoff before the payment (automatically set)
  • beforePrincipal – The principal balance before the payment (automatically set)
  • comments – To be set for any changes to payments; describes the changes made to the payment
  • status – The status of the payment (default: “None”)
  • sortDate – The date (as an int) to sort it by (automatically set)
  • chargeOffRecovery – Whether or not this is a charge-off recovery payment (0 or 1); set to 1 to make a charge-off recovery payment
  • CustomFieldValues – Any custom field values for the payment. See API – Custom Fields
  • order – A tie breaker for the ordering (automatically set)
  • _notEditable – Whether or not it shouldn’t be editable (default is “false”)

When this request is sent, the server will attempt to process the payment.  If it succeeds, then the payment will be logged, otherwise an error will appear in the System Notes.

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)