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. Your team can see every imported case, and correct its data, in the organisation dashboard.

Downloads: blank template (header row only) · sample file (two example rows)

File format​

This is the v2 format (October 2026). It carries the same fields as the data contract, under the column names below.

  • CSV, UTF-8, comma-separated. The first row is the header row. One row per loan. Up to 20,000 rows per file — split a larger book into several files.
  • An Excel workbook (.xlsx, first sheet) is accepted too, with the same columns and rules. Date cells are read as dates and coordinates at their stored precision, not the decimals the sheet displays — but a coordinate stored as a number loses trailing zeros (12.9700 → 12.97), so keep the Text format described below.
  • Use the column names below. Header matching ignores upper/lower case, spaces and punctuation (Loan No, LoanNo and loan_no are the same column), and column order does not matter. The dotted JSON field names of the data contract (borrower.name, loan.outstandingAmount, …) are not accepted as CSV headers.
  • Columns we don't recognise are ignored, so you can leave your own extra columns in the file.
  • Every required column must be present. A file without one is refused, or every row fails with the matching error.

Required columns​

CSV headerFeedsRules
Loan NosourceLoanNumberYour stable loan ID, ≤ 64 characters, unique in your book. It must stay the same in every file you send.
Customer Nameborrower.nameFull name.
Mobileborrower.phoneIndian mobile; +91 / 91 / leading 0 stripped, must normalise to 10 digits.
Addressborrower.address.full (accepted in place of line1)House / flat / building number and street — where the borrower actually lives. At least 5 characters, must contain a letter, not a placeholder (NA, -, null …).
Cityborrower.address.cityCity or town.
Stateborrower.address.stateIndian state or union territory: the full name (Karnataka) or the 2-letter code (KA). Spacing, punctuation and common spelling variants are accepted (Tamilnadu, J & K, U.P., Orissa, Chattisgarh, New Delhi …).
Pincodeborrower.address.pincode6 digits.
Latitudeborrower.address.latitudeLatitude of the borrower's address in decimal degrees. At least 4 decimal places; 6 recommended. See coordinates.
Longitudeborrower.address.longitudeLongitude of the borrower's address, same rules.
Due Amount (or Pending Amount)loan.outstandingAmountWhole INR rupees, > 0. Use one of the two header names.

Optional columns​

CSV headerFeedsNotes
Address Line 2borrower.address.line2Floor, wing, area / locality.
Landmarkborrower.address.landmarkNearby landmark that helps the partner find the house.
DPDloan.dpdNumber or 61-90 style range (upper bound is used). Strongly recommended — it sets visit priority. Present but unparseable (overdue) → row error; a placeholder (NA, N/A, -, null …) counts as empty, and an empty DPD on an update resets it to 0.
Repay Dateloan.nextDueDateYYYY-MM-DD (preferred), ISO datetime, DD-MM-YYYY, DD/MM/YYYY or DD-Mon-YY (e.g. 05-Nov-26). Present but unparseable (31/13/2026) → row error; a placeholder (NA, - …) counts as empty.
EMI Amountloan.emiAmountINR.
Late Chargesloan.lateChargesINR.
Emailborrower.email
Languageborrower.languageBorrower's preferred language, so we can brief the partner.
Employerborrower.employerName
Loan Amountloan.loanAmountINR.
Disbursal Amountloan.disbursedAmountINR.
Disbursed Dateloan.disbursedDateSame date formats as Repay Date.
ROIloan.interestRateRate of interest (%), a number.
Tenureloan.tenureA number.
Loan Frequencyloan.tenureUnitUnit of the tenure, e.g. months.
Repay Amount (or Due_Date_Repay_Amount)loan.totalRepayableINR.
Total Collectionloan.totalCollectedINR, already collected by you before hand-over.
Loan Typeloan.productNameProduct name shown to the partner.

The full header row, ready to copy:

Loan No,Customer Name,Mobile,Address,Address Line 2,Landmark,City,State,Pincode,Latitude,Longitude,Due Amount,DPD,Repay Date,EMI Amount,Late Charges,Email,Language,Employer,Loan Amount,Disbursal Amount,Disbursed Date,ROI,Tenure,Loan Frequency,Repay Amount,Total Collection,Loan Type

v1 headers keep working​

Because header matching ignores case, spaces and punctuation, files in the earlier format keep importing: LoanNo, CustomerName, mobile, address, repayDate, roi, loanFrequency, disbursedDate, totalCollection and loanType match the v2 columns Loan No, Customer Name, Mobile, Address, Repay Date, ROI, Loan Frequency, Disbursed Date, Total Collection and Loan Type. What a v1 file is missing is the address contract: add Latitude and Longitude (and Address, City and State if you left them out), or its rows are rejected — unless your organisation is on a grace period.

Coordinates​

Latitude and Longitude must be the real location of the borrower's address — the actual building. Do not send the centre of a pincode, city or branch, your office location, or a default value. Field partners are matched, checked in and paid by distance to this pin, so a row without valid coordinates is rejected and no visit happens. The full rules and the exact error texts are in the data contract.

  • Format: decimal degrees (WGS84) in two separate columns, with a dot as the decimal separator — Latitude 12.975326, Longitude 77.606262.
  • Wrong: 12°58'31"N (degrees-minutes-seconds), 12,975326 (comma as the decimal separator), 12.97 (too few decimals), 0 / 0.0, or both numbers in one cell. A placeholder (NA, -, null …) counts as a missing coordinate.
  • At least 4 decimal places on both values (≈ 11 m); 6 recommended. We count the decimals in the text of your file, so make sure your spreadsheet does not cut them (see Excel below).
  • Inside India: latitude roughly 6 to 37.5, longitude 67.5 to 97.8. If the two values look swapped, the error says so.
  • One pin per address: the same coordinates used for borrowers in different pincodes in one file are a default, office or branch location — every such row is rejected. Several borrowers at one address with the same pincode is fine.
  • Far from the pincode: if a pin is more than about 50 km from the area of the row's Pincode, the row still imports but comes back flagged as a warning, so you can check that the coordinates belong to that address.

Where to get them — use the most accurate source you have:

  • A GPS location captured at the borrower's address: an onboarding or verification visit, or a borrower-app location captured at home.
  • An address-verification or KYC provider that returns coordinates for the residence.
  • Google Maps: open the exact building, right-click on it, and click the coordinates shown at the top of the menu to copy them as lat, lng (e.g. 12.975326, 77.606262). The first number is Latitude, the second is Longitude — put them in two separate cells.

Preparing the file in Excel​

  1. Before pasting data, set the Loan No, Mobile, Pincode, Latitude and Longitude columns to Text format. Otherwise Excel turns long numbers into 9.88E+09 or cuts off decimals, and those rows are rejected.
  2. Save with File → Save As → CSV UTF-8 (Comma delimited).
  3. Open the saved file in a text editor once and check that the coordinates still show all their decimals.

Sample file​

fieldproof-cases-sample.csv
Loan No,Customer Name,Mobile,Address,Address Line 2,Landmark,City,State,Pincode,Latitude,Longitude,Due Amount,DPD,Repay Date,EMI Amount,Late Charges,Email,Language,Employer,Loan Amount,Disbursal Amount,Disbursed Date,ROI,Tenure,Loan Frequency,Repay Amount,Total Collection,Loan Type
LN-2026-000123,Ravi Sharma,9876543210,"12, MG Road",2nd Floor,Opp. Garuda Mall,Bengaluru,Karnataka,560001,12.975326,77.606262,12500,45,2026-11-05,2500,350,[email protected],Kannada,Acme Textiles Pvt Ltd,50000,48500,2025-03-15,24,24,months,60000,47500,Personal Loan
LN-2026-000124,Priya Nair,9123456789,"Flat 4B, Sea View Apartments, Princess Street",,Near St. Francis Church,Kochi,Kerala,682001,9.965389,76.242083,8200,61-90,2026-11-10,,0,,Malayalam,,,,,,,,,,

Leave optional cells empty rather than writing N/A or -. In a DPD or date cell a placeholder (NA, N/A, -, null …) counts as empty, but any other value we cannot read (overdue, 31/13/2026) 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.

Grace period​

By default every row must meet the address contract. If Fieldproof has put your organisation on a coordinate grace period, rows without Latitude and Longitude (or without Address, City or State) still import — we place those cases from the pincode / street address — and each one is reported back as a warning. Coordinates that are present are always checked: a malformed value, or only one of the two, is still an error (a placeholder such as NA counts as absent, not malformed). A file committed before your grace period started can be re-sent unchanged and is processed again under the grace rules. The grace period ends automatically at its end date, and from then on the same rows are rejected. See grace period.

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 and warning list of any file, then fix and re-send only the rejected rows.
  • Re-sending a file is safe: an identical, already-committed file is a no-op as long as every loan in it still has a live case (a loan whose case has since closed gets a fresh case), 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, so send them in every file; a loan whose earlier case is closed gets a fresh case).
  • Same Loan No twice in one file: the first row is kept, later duplicates are row errors — send each loan once, with its latest state.
  • The column set is fixed — there is no per-organisation column mapping for CSV. Because extra columns are ignored, your existing export works as-is as long as it also carries the required columns under the names above. Send a sample file to [email protected] if you want it checked.
  • 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.