Part 1 prompt: Stripe in Brazil is obliged to register customers’ transactions for each merchant with the central bank as an aggregated unit per day. These are called receivables.
A receivable is identified by 3 identifiers:
merchant_id(String): The id of the merchant on Stripe side.card_type(String): The type of the card used for the transaction (e.g. Visa).payout_date(String): String date of the funds available to the merchant by Stripe.
A payment transaction in Stripe API can be represented as the following object:
Transaction {
string customer_id
string merchant_id
string payout_date
string card_type
int amount
}
Implement register_receivables function that takes a string in CSV format where each line represents a transaction and returns the registered aggregated receivables using the rules above. Print the returned receivables to console using the format below. Feel free to parse the CSV using a standard or a 3rd party library or implement it yourself.
You can assume the following about the input:
- The first line of the input is a header. The header is always the same so it can be ignored or hardcoded.
- You can assume that the input has already been read from a file and checked for correctness.
- No data fields in this file will include commas or whitespace surrounding the field values.
You can also assume the following about the output:
- The first line of the output is the header. The header is always the same so it can be hardcoded.
- Order of the output does not matter.
Example input 1:
customer_id,merchant_id,payout_date,card_type,amount
cust1,merchantA,2021-12-30,Visa,150
cust2,merchantA,2021-12-30,Visa,200
cust3,merchantB,2021-12-31,MasterCard,300
cust4,merchantA,2021-12-30,Visa,50
Output 1:
id,card_type,payout_date,amount
merchantA,Visa,2021-12-30,400
merchantB,MasterCard,2021-12-31,300
Example input 2:
customer_id,merchant_id,payout_date,card_type,amount
cust1,merchantA,2021-12-29,MasterCard,50
cust2,merchantA,2021-12-29,Visa,150
cust3,merchantB,2021-12-31,Visa,300
cust4,merchantB,2021-12-29,MasterCard,200
Output 2:
id,card_type,payout_date,amount
merchantA,MasterCard,2021-12-29,50
merchantA,Visa,2021-12-29,150
merchantB,Visa,2021-12-31,300
merchantB,MasterCard,2021-12-29,200
This Stripe interview question is about parsing CSV data and aggregating transactions by a composite key. Each receivable is uniquely identified by merchant_id, card_type, and payout_date, so the solution is to group rows by that triple and sum the amount for each group. A hash map or dictionary is the natural data structure here, since it supports efficient accumulation while scanning the transactions once. The final output should list the aggregated receivables in the required CSV format, and the order does not matter.