Stripe Interview Questions and Solutions #4: Brazil Receivables & Contracts (Accounts Receivable Recording and Contract Updates)

11 Views
No Comments

Part 1: Register Receivables

Stripe in Brazil is obliged to register customer’s 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.

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

Part 2: Contracts and Updates

In Brazil, settlement times can take up to 30 days for domestic card transactions.
Merchants can sell their receivables to a financial institution in order to get funds earlier.

Stripe is obliged to respect those contracts and update the registered receivables.
Each contract is mapped to one receivable using the same 3 identifiers as before:

  • merchant_id
  • card_type
  • payout_date

In addition, merchants can sell part of their receivables and/or receive multiple contracts for the same receivable.

Safe assumptions:

  • Contract amount will not exceed the receivable amount.
  • If a receivable is sold fully, it should be returned as part of registered receivables with amount 0.
  • Contracts will not have zero amounts.

Update the registered_receivables function implemented in Part 1 to reflect these new rules.

The VOprep team has long accompanied candidates through various major company OAs and VOs, including Stripe, Google, Amazon, Citadel, SIG, providing real-time voice assistance, remote practice, and interview pacing reminders to help you stay smooth during critical moments. If you are preparing for Stripe or similar engineering-focused companies, you can check out our customized support plans—from coding interviews to system design, we offer full guidance to help you succeed.

END
 0