Skip to main content

Create Remita Collection Batch

Overview​

Creates a new collection batch by uploading a list of loan items in a single call. Each item in the items array creates a new RemitaLoanRequest (in Draft status) and links it to the batch. The batch is created in Initiated status and must be authorized before it can be run.

This is the primary entry point for bulk Remita loan onboarding — equivalent to the legacy UploadRemittaBatchCommand.

Command Details​

  • Command: CreateRemitaCollectionBatchCommand
  • Type: Command

API Endpoint​

POST /api/bpm/cmd

Request Structure​

FieldTypeRequiredDescription
batchNamestringNoName for the batch — auto-generated if omitted
batchDescriptionstringNoOptional description or label
organisationIdlongYesOrganisation the batch belongs to
itemsarrayYesList of loan entries to create (see below)

Item Fields (items[])​

FieldTypeRequiredDescription
accountNumberstringYesBorrower's bank account number
bankCodestringNoCBN bank code
loanAmountdecimalYesTotal loan amount (must be > 0)
collectionAmountdecimalYesMonthly deduction amount (must be > 0)
numberOfRepaymentsintNoNumber of repayments (alias: tenure)
phoneNumberstringYesMobile number — minimum 11 digits (alias: mobileNumber)
loanAccountstringNoAccount to receive disbursed funds
companyNamestringNoBorrower's employer name — defaults to organisation name
accountNamestringNoName on the account
cifstringNoCustomer Information File ID (default: NO_PROFILE)
bvnstringNoBank Verification Number
emailstringNoBorrower's email address
interestRatedecimalNoAnnual interest rate (default: 0)
tagstringNoLoan category tag
Validation

All items are validated before any records are saved. If any item fails validation, the entire batch is rejected with the offending phone number and reason.

Try It Out​

POST/api/bpm/cmdCreateRemitaCollectionBatchCommand
Request Body

Response Structure​

{
"isSuccessful": true,
"statusCode": "00",
"message": "Batch uploaded successfully. 2 loan request(s) created.",
"data": {
"id": 3001,
"batchName": "March 2026 Salary Deductions",
"batchStatus": 0,
"batchStatusDesc": "Initiated",
"totalCount": 2,
"totalAmount": 800000.00,
"loanRequestCount": 2
}
}

Validation Error (single item fails)​

{
"isSuccessful": false,
"message": "08098765432: The loan amount must be greater than 0."
}

What Happens Next​

Each item creates a RemitaLoanRequest with:

  • Status = Draft
  • MandateActivationStatus = NotActivated
  • DisbursementChannel = External (loans were already disbursed externally)

The batch proceeds through this flow:

Initiated → Authorized → Processing → Completed
  1. Authorize the batch — Authorize Collection Batch
  2. Run the batch to trigger collections — Run Collection Batch
  3. Monitor individual collections — Retrieve Collection Batches