Bucketwise Join waitlist

Learn / Data guide

Credit-risk data guide: the tables and columns behind every tool

Every Bucketwise tool asks for table and column names. This guide explains what those tables hold, what each column means, and where to find the names in your own systems. Your names will differ from the examples. The meaning will not. You never need to share customer data: names and definitions are enough.

How to find your table and column names

Three ways, from easiest to most reliable. 1) Open your data dictionary or MIS documentation if one exists. 2) Ask the data or MIS team for the table that holds loans, the one that holds instalments due, and the one that holds payments received. 3) List the columns yourself with a schema query. It returns names and types only, no customer rows.

DatabaseQuery that lists tables and columns
PostgreSQL, MySQL, SQL Server, Snowflake, RedshiftSELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_schema = 'your_schema' ORDER BY table_name, ordinal_position;
OracleSELECT table_name, column_name, data_type FROM all_tab_columns WHERE owner = 'YOUR_SCHEMA' ORDER BY table_name, column_id;
BigQuerySELECT table_name, column_name, data_type FROM `project.dataset.INFORMATION_SCHEMA.COLUMNS` ORDER BY table_name, ordinal_position;

Replace the schema, owner, project and dataset with your own. Paste the result into the Bucketwise schema profile tool, and it fills the other tools for you.

Loan master: one row per loan

The loan master is the list of every loan you have given. Most other tables join back to it through the loan id. It should have exactly one row per loan.

Column (typical names)What it holdsWhere to lookWatch out
loan_id, acct_noThe unique id of the loanThe first column of the loan master or LMS loan tableMust be identical in every table you join. Check for duplicates before anything else.
productPersonal loan, business loan, salary advance and so onProduct or scheme code in the LMSCodes may be numbers. Ask for the code list.
disb_dtDate the money was disbursedDisbursal or booking dateNot the sanction date, and not the first EMI date.
sanction_amt, disb_amtAmount sanctioned, amount actually disbursedLoan amount fieldsThey can differ after deductions or partial disbursal. Pick one and say which.
tenure_mNumber of monthly instalmentsTenure or termSome systems store days or years.
roi_pctAnnual interest rateRate of interestCheck if it is flat or reducing balance.
emi_amtThe monthly instalmentEMI or instalment amountMay be revised after restructuring.
statusActive, closed or written offAccount statusStatus values differ by system. List them before you filter.
closure_dt, writeoff_dtDate the loan closed or was written offClosure and write-off fieldsEmpty for live loans. A closed loan should have nothing overdue.

Typical problems: the same loan appearing twice, a zero or negative sanction amount, and loans marked closed that still show overdue amounts.

Repayment schedule: what was due and when

One row for every instalment that falls due on a loan. It answers: how much was due, and on what date.

Column (typical names)What it holdsWhere to lookWatch out
loan_idThe loan this instalment belongs toSame column as in the loan masterJoins many rows to one loan.
inst_noInstalment number: 1, 2, 3 and so onInstalment or sequence numberGaps (1, 2, 4) mean a missing instalment.
due_dtDate the instalment was dueDue date or EMI dateNever use the payment date here. Watch for empty due dates.
due_amtAmount due, principal plus interestInstalment or EMI amountSome tables split principal and interest into two columns. Add them.

Typical problems: the same instalment listed twice, so a join multiplies rows, instalments missing from the sequence, and empty due dates.

Payment transactions: what was actually received

One row for every payment event, including failed presentations and reversals in many systems. It answers: how much money actually came in, and when.

Column (typical names)What it holdsWhere to lookWatch out
txn_idUnique id of the payment eventTransaction or receipt numberNot unique if the system reposts a payment.
loan_idThe loan the payment was forLoan or account referenceSome payments reference loans that are not in the loan master.
pay_dtDate the money was receivedReceipt, value or collection dateNot the date it was presented to the bank. A date after your as-of date must be excluded.
pay_amtAmount receivedAmount or credit amountReversals are often negative.
modeHow it was paid: auto-debit, UPI, cash, chequePayment mode or channelUseful for collections analysis.
txn_statusWhether the payment actually succeededStatus, presentation result or return codeFailed and bounced rows sit in the same table. If you leave them in, loans look better than they are.

Typical problems: bounced rows counted as payments, reversals that cancel an earlier payment, the same payment posted twice, payments dated before disbursal, and payments dated after the as-of date.

Monthly snapshot: the book at each month-end

One row per loan per month-end, frozen at the time. It is what you use for roll rates, vintages and trends, because you cannot go back and recompute an old month from today's data.

Column (typical names)What it holdsWhere to lookWatch out
loan_idThe loanSame id as everywhere elseOne row per loan per month.
month_endThe snapshot dateReporting or snapshot dateAlways the last day of the month.
dpdDays past due on that dateDPD field in the monthly MISCheck it against a recomputed value. Stored snapshots can disagree with the payments.
bucketCurrent, 1-30, 31-60, 61-90 or 91+Bucket or delinquency bandConfirm the boundary: 91+ is more than 90 days.
overdue_amtAmount overdue at that dateArrears or overdue fieldZero for current loans.
pos_amtPrincipal outstandingPOS or principal balanceNot the same as total outstanding, which includes interest.

Applications: who applied and what was decided

Column (typical names)What it holdsWhere to lookWatch out
app_idUnique id of the applicationApplication number in the LOSLinks to the bureau pull and, if approved, to the loan.
app_dtApplication dateCreated or login dateUse one date consistently for monthly funnels.
incomeDeclared or verified monthly incomeIncome field in the LOSSay which one. Declared and verified differ.
requested_amtAmount the customer asked forRequested loan amountNot the sanctioned amount.
foirFixed obligations as a share of incomeComputed field, or EMI plus obligations divided by incomeDifferent lenders include different obligations.
decisionApproved or declinedFinal decision fieldCheck what happens to cases still pending.
decline_reasonWhy it was declinedReason or reject codeOften free text. The same reason can be spelled several ways.

Typical problems: declined applications with no reason, and one reason written in many spellings, which splits one reason across many counts.

Bureau pulls: what the bureau said at application

Column (typical names)What it holdsWhere to lookWatch out
pull_idUnique id of the pullBureau response idOne application can have more than one pull.
app_idThe application it belongs toLOS referenceThe same pull stored twice inflates counts.
pull_dtDate the bureau was queriedEnquiry dateA pull long before the application is stale.
bureau_scoreThe score returnedScore field in the bureau responseCheck the valid range for your bureau. Some use a special value for no history.
enquiries_6mCredit enquiries in the last six monthsBureau summaryA count, not a balance.
max_dpd_12mWorst DPD in the last 12 monthsBureau summaryBureau DPD can fall the moment a payment posts.

Terms that appear in many tools

TermMeaningNote
As-of dateThe date every figure is measured onPick one date for the whole query. The last day of the month is usual.
Grace daysDays allowed after the due date before a loan counts as lateUse 0 if your policy has none.
Overdue amountWhat is due and unpaid on the as-of dateNot the full outstanding balance.
POSPrincipal outstandingExcludes accrued interest.
BucketA band of DPD: Current, 1-30, 31-60, 61-90, 91+The last bucket starts above 90 days.
Bad flagA loan that reached a stated delinquency within a stated windowFor example 91+ within 12 months of disbursal. Write the definition down and keep it fixed.

What goes wrong in real tables

We tested the prompts on loan data that contains each of these problems. The same patterns turn up in real extracts, which is why the tools ask about them.

The data-quality tool writes a query for each of these checks. Run it before any other tool.

Try it on your own tables

The free tools give you the prompt, the checks and how to present the result. You enter table names only.

See the free tools

Frequently asked questions

Do I need to share customer data to use the tools?

No. The tools only ask for table and column names and your definitions. Customer rows never need to be pasted.

My column names are different from the examples. Does that matter?

No. Type your own names over the samples. The meaning of the column is what counts.

Which tables do I need to start?

For DPD and buckets you need the repayment schedule and the payment transactions. For roll rates you need the monthly snapshot.

Keep reading