Skip to content

Bad Records

The Bad Records tab displays rows that were rejected during file upload. These records failed validation checks and were not loaded into the RAW tables.

Bad Records

Rejection Reasons

ReasonDescriptionExample
amount <= 0Transaction amount is zero or negativeZero-amount settlement entries
status not in allowed valuesPayment status indicates failureBOUNCE, FAILED, Bounced
blank loan_idNo loan identifier after all resolution attemptsBlank Order Note in Cashfree, UUID order_receipt in Vivriti

Viewing Bad Records

  1. Go to File Upload > Bad Records tab
  2. Filter by:
    • Lender - select a specific lender
    • Reason - filter by rejection reason
    • Sort - newest first, oldest first, by lender, by reason
  3. Clickable reason count pills at the top show counts per reason - click to filter

Record Details

Each rejected row shows:

  • Lender - which lender file it came from
  • Loan ID - the loan identifier (if available)
  • Amount - transaction amount
  • Date - transaction date
  • Status - original status value
  • Rejection Reason - why it was rejected
  • Uploaded - when the file was processed

Clearing Records

Click Clear All (or Clear {lender} when filtered) to remove rejected records from the table. This is useful after reviewing and re-uploading corrected files.

WARNING

Clearing records is permanent - they cannot be recovered. Review them before clearing.

Re-uploading Corrected Files

After identifying bad records:

  1. Fix the source CSV (correct amounts, statuses, loan IDs)
  2. Clear the rejected records for that lender
  3. Reset the file processing log: DELETE FROM "RAW"."RAW_S3_FILE_PROCESSING_LOG" WHERE lender_key = '{lender}'
  4. Re-upload the corrected file

Database Table

RAW.RAW_REJECTED_RECORDS

ColumnTypeDescription
lender_keytextLender identifier
source_filetextS3 key of the source file
loan_idtextLoan ID (if available)
amountnumericTransaction amount
datetimestampTransaction date
statustextOriginal status value
notetextRemarks
rejection_reasontextWhy the row was rejected
created_attimestamptzWhen the rejection was recorded

API Endpoints

MethodPathDescription
GET/api/rejected-recordsList with filters (lender, reason, sort, pagination)
DELETE/api/rejected-recordsClear records (optional lender filter)

Turno Fineract LMS Documentation