← Stripe Interview Insights

Stripe·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Jul 2026

Summary

Stripe SWE interview with a KYC validation problem. Pretty focused on rule-based logic over raw algorithmic complexity, which I didn't expect going in.

Questions Asked (1)

Q1

Given a list of business account records each containing 6 KYC fields, write a function that outputs VERIFIED or NOT_VERIFIED for each record. A record is only verified if all 6 fields are present and non-empty, and the full_statement_descriptor field is between 5 and 31 characters inclusive.

Algorithms & Data StructuresAPI & IntegrationsTechnical Trade-offs
Author's notes

Simpler than it sounds on paper but I still managed to fumble the inclusive boundary check the first time.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the input format and edge cases (e.g., null values, whitespace, data types). Then outline a straightforward validation function that checks each field for presence and non-emptiness, and specifically validates the full_statement_descriptor length. Finally, discuss how to apply this function to each record and return the appropriate status.

Pro tip: Mention that you would trim whitespace before checking emptiness to avoid false negatives, and consider using a constant for the descriptor length bounds to make the code more maintainable.

1. Clarify requirements and edge cases

Ask about the input data structure, possible null values, and whether fields can contain only whitespace. Confirm the exact length bounds for full_statement_descriptor.

2. Design the validation logic

For each record, iterate over the 6 KYC fields and check that each is present and non-empty (after trimming). Separately, check that full_statement_descriptor length is between 5 and 31 characters inclusive.

3. Implement the function

Write a function that takes a list of records and returns a list of 'VERIFIED' or 'NOT_VERIFIED' strings. Use early returns or a flag to short-circuit on first failure.

4. Test with representative cases

Include tests for all fields present and valid, missing fields, empty strings, whitespace-only strings, and descriptor lengths at boundaries (4, 5, 31, 32).

5. Discuss trade-offs and optimizations

Talk about time complexity (O(n) where n is number of records), potential for parallelization, and whether to validate all fields or fail fast. Mention error handling and logging for production.

Key Points to Mention

  • Handling null, undefined, and empty string values appropriately
  • Trimming whitespace before checking for emptiness
  • Using constants for the descriptor length bounds (5 and 31)
  • Time complexity: O(n) for n records, each with constant-time checks
  • Returning a list of statuses in the same order as input
  • Considering edge cases like non-string types or missing fields

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.