# File Based Scoring
source: https://developer.mastercard.com/carbon-calculator/documentation/testing/testcase/test_case_file_based_scoring_details/index.md

Calculates carbon emission based on payment transaction amount and the merchant category code with a bulk upload.

## Pre-requisites {#pre-requisites}

Refer to the [File Based Scoring Calculation](https://developer.mastercard.com/carbon-calculator/documentation/use-cases/file_based_scoring/index.md) use case.

## Test Cases {#test-cases}

### Test Case: Success-File Based Scoring Calculation {#test-case-success-file-based-scoring-calculation}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
ee421c25-f5-b8-3600b76b8811,3857,999,EUR,MA
ee421c25-f5-b8-3600b76b8812,3857,1324,EUR,MA
ee421c25-f5-b8-3600b76b8813,5436,537,IN,MA
ee421c25-f5-b8-3600b76b8814,2323,3434,IN,OTH
ee421c25-f5-b8-3600b76b8815,4324,20004,USD,MA
ee421c25-f5-b8-3600b76b8816,6433,4332,IN,OTH
ee421c25-f5-b8-3600b76b8817,8844,23,USD,MA
ee421c25-f5-b8-3600b76b8818,9777,9897,USD,MA
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
ee421c25-f5-b8-3600b76b8811,3857,999,EUR,d026d85d-2ac7-4c4b-83b2-71596019ef1b,253145.42,8929.45,604,Hotels, Motels & Resorts,Hotels & Vacation ,,
ee421c25-f5-b8-3600b76b8812,3857,1324,EUR,d026d85d-2ac7-4c4b-83b2-71596019ef1b,3423.2,234.2,543,Hardware Stores & Contractor Services, Hardware & Construction,Home & Garden ,,
ee421c25-f5-b8-3600b76b8813,5436,537,IN,d026d85d-2ac7-4c4b-83b2-71596019ef1b,654.34,231.3,87,Garden Supply Stores & Services, Garden Supply,Home & Garden ,,
ee421c25-f5-b8-3600b76b8814,2323,3434,IN,d026d85d-2ac7-4c4b-83b2-71596019ef1b,2342.23,134.2,343,Equipment,  Furniture & Home Furnishings,Furniture & Decoration ,,
ee421c25-f5-b8-3600b76b8815,4324,20004,USD,d026d85d-2ac7-4c4b-83b2-71596019ef1b,54643.4,3453.3,5342,Grocery Stores & Supermarkets, Groceries,Food & Beverages ,,
ee421c25-f5-b8-3600b76b8816,6433,4332,IN,d026d85d-2ac7-4c4b-83b2-71596019ef1b,975.3,234.2,453,Restaurants, Restaurants & Fast Food,Food & Beverages ,,
ee421c25-f5-b8-3600b76b8817,8844,23,USD,d026d85d-2ac7-4c4b-83b2-71596019ef1b,6532.1,546.21,213,Railroads & Freight, Train,Transportation ,,
ee421c25-f5-b8-3600b76b8818,9777,9897,USD,d026d85d-2ac7-4c4b-83b2-71596019ef1b,234234.2,3423.3,6343,Airlines, Flights,Transportation ,,
```

### Test Case: Fail-Invalid Transaction Record Error-Invalid MCC character length {#test-case-fail-invalid-transaction-record-error-invalid-mcc-character-length}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
fe421c25-f928-4bf6-b884-3600b76b862p,,999999,EUR,MA
fe421c25-f928-4bf6-b884-3600b76b864r,4.66E+12,999999,EUR,OTH
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
fe421c25-f928-4bf6-b884-3600b76b862p,,999999,EUR,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,INVALID_TRANSACTION_RECORD_ERROR,MCC LENGTH SHOULD BE BETWEEN 1 TO 4 CHARACTERS
fe421c25-f928-4bf6-b884-3600b76b864r,4.66E+12,999999,EUR,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,INVALID_TRANSACTION_RECORD_ERROR,MCC LENGTH SHOULD BE BETWEEN 1 TO 4 CHARACTERS
```

### Test Case: Fail-Invalid Transaction Record Error-Invalid CURRENCY character length {#test-case-fail-invalid-transaction-record-error-invalid-currency-character-length}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
fe421c25-f928-4bf6-b884-3600b76b869r,3857,999999,TFGDHFTGDKSJD,OTH
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
fe421c25-f928-4bf6-b884-3600b76b869r,3857,999999,TFGDHFTGDKSJD,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,INVALID_TRANSACTION_RECORD_ERROR,CURRENCY SHOULD BE BETWEEN 1 TO 3 CHARACTERS
```

### Test Case: Fail-Invalid Transaction Record Error-Invalid CURRENCY character length {#test-case-fail-invalid-transaction-record-error-invalid-currency-character-length-1}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
fe421c25-f928-4bf6-b884-3600b76b869r,3857,999999,TFGDHFTGDKSJD,OTH
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
fe421c25-f928-4bf6-b884-3600b76b869r,3857,999999,TFGDHFTGDKSJD,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,INVALID_TRANSACTION_RECORD_ERROR,CURRENCY SHOULD BE BETWEEN 1 TO 3 CHARACTERS
```

### Test Case: Fail-Invalid Transaction Record Error-Invalid AMOUNT type {#test-case-fail-invalid-transaction-record-error-invalid-amount-type}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
fe421c25-f928-4bf6-b884-3600b76b860r,3857,,EUR,OTH
fe421c25-f928-4bf6-b884-3600b76b860o,3857,ABC,EUR,MA
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
fe421c25-f928-4bf6-b884-3600b76b860r,3857,,EUR,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,INVALID_TRANSACTION_RECORD_ERROR,AMOUNT SHOULD BE NUMERIC
fe421c25-f928-4bf6-b884-3600b76b860o,3857,ABC,EUR,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,INVALID_TRANSACTION_RECORD_ERROR,AMOUNT SHOULD BE NUMERIC
```

### Test Case: Fail-Transaction Scoring Error-Unsupported CURRENCY {#test-case-fail-transaction-scoring-error-unsupported-currency}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
fe421c25-f928-4bf6-b884-3600b76b867p,3857,999999,G6@,MA
fe421c25-f928-4bf6-b884-3600b76b866o,3857,999999,ABC,Ma
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
fe421c25-f928-4bf6-b884-3600b76b867p,3857,999999,G6@,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,TRANSACTION_SCORING_ERROR,UNSUPPORTED CURRENCY: G6@
fe421c25-f928-4bf6-b884-3600b76b866o,3857,999999,ABC,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,TRANSACTION_SCORING_ERROR,UNSUPPORTED CURRENCY: ABC
```

### Test Case: Fail-Transaction Scoring Error-Invalid AMOUNT {#test-case-fail-transaction-scoring-error-invalid-amount}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
fe421c25-f928-4bf6-b884-3600b76b860q,3857,1.23E+20,EUR,OTH
fe421c25-f928-4bf6-b884-3600b76b860p,3857,1.23E+21,EUR,MA
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
fe421c25-f928-4bf6-b884-3600b76b860q,3857,1.23E+20,EUR,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,TRANSACTION_SCORING_ERROR,For input string: "1.23E+20"
fe421c25-f928-4bf6-b884-3600b76b860p,3857,1.23E+21,EUR,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,TRANSACTION_SCORING_ERROR,For input string: "1.23E+21"
```

### Test Case: Fail-Transaction Scoring Error-Invalid MCC {#test-case-fail-transaction-scoring-error-invalid-mcc}

* Input
* Output

```Input
transactionId,mcc,amountValue,amountCurrencyCode,cardBrand
fe421c25-f928-4bf6-b884-3600b76b863q,ABC@,999999,EUR,OTH
```

```Output
txId, mcc, amount, currency, fileId, carbonEmissionInGrams, carbonEmissionInOunces, sectorCode, sector, subCategory, mainCategory, errorCode, errorDescription
fe421c25-f928-4bf6-b884-3600b76b863q,ABC@,999999,EUR,23d56127-d69f-4cb3-8951-9c3d2263cb2c,,,,,,,TRANSACTION_SCORING_ERROR,INVALID MCC:ABC@
```

