The ACH Debit API enable you to create, retrieve, cancel and reconcile ACH debit transactions.
- An active NACH Profile for the sponsor bank to which you want to submit the ACH Debit transaction. You can create NACH Profiles by contacting Support.
mandatein LotusPay. This can be an internal mandate (i.e. one that you originally created in LotusPay), or an imported external mandate (i.e. one that you originally created elsewhere and later imported into LotusPay).
Step 1. For each amount that you want to request on each mandate, you create
ach_debit via a
POST request using the POST Create ACH Debit API with the required arguments. LotusPay returns an
status is initially
sequence_number is initially empty. You should store the
charge_date can be any date up to one year in advance. If
charge_dateis not an NACH business day, LotusPay will automatically roll it forward to the next business day (except if its the last day of the month, in which case LotusPay will automatically roll it back to the previous business day). You can include any custom identifiers as key-value pairs in
metadata. The cut-off time for creating transactions is 9am on an NACH business day. You can cancel
pending transactions up to this point using the POST Cancel ACH Debit API. If a
mandate is cancelled for any reason, all of its
ach_debit transactions are automatically and immediately cancelled too.
Step 2. Upon the date specified in
charge_date, in the morning LotusPay submits each
ach_debit provided that its
status transitions to
Step 3. Your sponsor bank reviews the transactions. If your sponsor bank conducts any validations, they may deny to submit certain transactions. For example, if the sponsor bank is validating frequency, and they have already observed one successful transaction in a mandate's frequency period, they may deny subsequent transaction requests on the same mandate in the same period. NPCI encourages banks to run such validations. Such transactions will be automatically marked as
cancelled (usually in the evening, but sometimes earlier), and you can see the reason in the dashboard. All valid transactions are submitted to the NACH system. NB: LotusPay does not validate frequency.
Step 4. The NACH system processes each transaction with the destination bank of the respective mandate, and returns a status to your sponsor bank.
Step 5. In the evening, LotusPay updates each transaction.
status transitions to
sequence_number is populated with the transaction sequence number assigned by NPCI. LotusPay instantly informs you of the status by sending
POST requests to your webhook URL of
ach_debit.extended (containing the full
ach_debit payload). You should update the
failure_code (if any) and
failure_reason (if any) in your system. Click here to learn more about transaction failures. If required,
failed transactions can be retried on the next business day. If you are not integrating the webhook, you can use the GET ACH Debit API to retrieve the details, or you can view details and export reports in the dashboard. Any objects with
extended will usually reach a final status of
failed within one or two business days.
Step 6. LotusPay creates an
ach_debit_collection for the aggregate amount of all
confirmed transactions for a
charge_date with each sponsor bank. This is the amount that the sponsor bank will pay into your bank account on the same day. You should check your bank statement to ensure that you receive this exact amount. You can use the GET ACH Debit Collection List API to detect new objects, and then use the GET ACH Debit Collection API to see the details of each new object. You can run custom search filters and export CSV reports from the dashboard ACH Debit list page e.g. all transactions for
charge_date today. You can also export a CSV report from an individual ACH Debit Collection's page to see all the
confirmed transactions in that particular
Another useful endpoint is the GET ACH Debit List API. You can use this endpoint with a filter to see all the transactions for a particular