Skip to main content

CSV import

Zero engineering: send your overdue book as a CSV and the Fieldproof operations team imports it for you through the CRM. Ideal for a pilot while your API integration is being built — everything downstream (field work, webhooks if configured, payments) works identically.

File format​

One row per loan. Headers are exact, case-sensitive names — the dotted JSON field names of the data contract (borrower.name, loan.outstandingAmount, …) are not accepted as CSV headers.

Required columns​

CSV headerFeedsRules
LoanNosourceLoanNumberYour stable loan ID, ≤ 64 characters, unique in your book.
CustomerNameborrower.nameFull name.
mobileborrower.phoneIndian mobile; +91 / 91 / leading 0 stripped, must normalise to 10 digits.
Pincodeborrower.address.pincode6 digits.
Due Amount (or Pending Amount)loan.outstandingAmountWhole INR rupees, > 0. Use one of the two header names.

Optional columns​

CSV headerFeedsNotes
emailborrower.email
Employerborrower.employerName
addressborrower street addressFree text, one column.
Cityborrower.address.city
Stateborrower.address.state
Loan Amountloan.loanAmountINR.
Disbursal Amountloan.disbursedAmountINR.
DPDloan.dpdNumber or 61-90 style range (upper bound is used). Present but unparseable → row error.
repayDateloan.nextDueDateYYYY-MM-DD, ISO datetime, DD-MM-YYYY, DD/MM/YYYY or DD-Mon-YY (e.g. 28-Apr-26). Present but unparseable → row error.
Late Chargesloan.lateChargesINR.
roiloan.interestRateRate of interest (%).
tenureloan.tenure
loanFrequencyloan.tenureUnite.g. months.
disbursedDateloan.disbursedDateSame date formats as repayDate.
Repay Amountloan.totalRepayableINR.
totalCollectionloan.totalCollectedINR.
loanTypeloan.productName

Any other column is ignored.

Sample file​

overdue-book-2026-08-18.csv
LoanNo,CustomerName,mobile,Pincode,Due Amount,email,Employer,address,City,State,Loan Amount,Disbursal Amount,DPD,repayDate,Late Charges,roi,tenure,loanFrequency,disbursedDate,Repay Amount,totalCollection,loanType
LN-2026-000123,Ravi Sharma,+919876543210,560001,12500,[email protected],Acme Textiles Pvt Ltd,"12 MG Road, Near Trinity Metro",Bengaluru,Karnataka,50000,48500,45,2026-09-05,350,24,24,months,15-Mar-25,60000,47500,Personal Loan
LN-2026-000124,Priya Nair,9123456789,682001,8200,,,"Flat 4B, Sea View Apartments",Kochi,Kerala,,,61-90,05-09-2026,0,,,,,,,

Leave optional cells empty rather than writing N/A or - — a present but unparseable DPD or date fails that row. Money is whole rupees (12500, not 12500.00 INR or paise). Wrap a value that contains a comma in double quotes, as the address column above does.

How it works​

  • You send the file to your Fieldproof integration contact; the operations team uploads it through the CRM. Cadence is agreed at onboarding.
  • Ops previews the file before committing it — the same per-row validation as the push API's dry-run. Rows fail individually; the rest of the file imports. Ask your integration contact for the row-error list of any file.
  • Re-sending a file is safe: an identical, already-committed file is a no-op, and a changed row updates the existing active case in place (same re-push semantics as the API — an omitted DPD or Late Charges resets to 0; a loan whose earlier case is closed gets a fresh case).
  • Same LoanNo twice in one file: the first row is kept, later duplicates are row errors — send each loan once, with its latest state.
  • Your existing export format may be usable as-is: a custom column mapping can be configured by ops for your organisation. Send a sample file to [email protected].
  • Every case created from a CSV emits the same events (case.received, payment.collected, case.closed, …) to your webhook or the poll feed once those are configured.

:::note Withdrawing a case A loan simply disappearing from your next file does not close its case. Tell your integration contact, or call POST /cases/{sourceLoanNumber}/recall once you have API credentials. :::

When your API build is ready, switching to push changes nothing else — same data, same events, same payments.