Software engineers at PayPal work on a wallet where every action moves someone's money, decisions about fraud must be made in the moment of payment, and sensitive details like card and bank numbers pass through the code. Auditors can ask for the history of any transaction. Prepare to discuss money sent to someone with no account yet, amounts in many currencies, risk checks under time limits, sensitive data and cleaning up after a job ran twice. What to show here: engineering that stays correct with someone's money at stake. Each question below has what the interviewer is checking, an answer frame and a sample spoken answer to adapt.
How PayPal hires, in its own words, and its questions for every job →
“In your project the transaction history had to be complete and provable to an outside auditor. That changed my instincts. I stopped updating records in place and wrote every change as a new entry with who, when and why. I made sure every access to sensitive records was logged, and that the logs could not be edited by the same people who wrote the code. Tests included one that replays all entries and checks the final balances match. I wrote plain documents describing the flow, which the auditors read. The audit went through, and your result.”
Weak answers treat audit as paperwork done by others and show no change to how they build.
“While looking at logs for a performance issue in your project, I noticed many new accounts created within minutes from similar addresses, each making one small transaction. I did not block them at once, because a group of colleagues signing up together could look similar. I pulled the data together and found the accounts shared the same payment details, which honest users rarely do. I brought it to the team, and we added a check that slows sign-up from one source and asks for extra verification when payment details are reused. Honest users saw almost no change. The result was your result.”
Weak answers block broadly without checking, or leave it to someone else because it is not their feature.
“The money would leave the sender's available balance and sit in a pending transfer tied to the email address, so it is safe and cannot be spent. We send the address a message explaining that money is waiting. While it is unclaimed, the sender can cancel and get it back, which also helps when they typed the wrong address. If someone creates an account and verifies that address, the pending transfer is matched and credited. Verification matters, or anyone could claim it. If nothing happens within a set period, the transfer expires and the money returns to the sender with a message.”
Weak answers reject the transfer entirely or credit whoever registers the address without verifying it.
“I would represent an amount as a pair: an integer count of the currency's smallest unit and the currency code. A table per currency says how many decimal places it has, so the same code handles a currency with none and one with three. Arithmetic happens on the integers. Where division is needed, such as splitting a fee, I round once by a written rule and put any leftover unit somewhere explicit. Two amounts in different currencies must never be added, and the type system can enforce that. Display formatting is separate and uses the currency's rules, never the other way round.”
Weak answers use a decimal with two places for everything, which breaks for currencies with none or three.
“The service has a small time budget, so the signals it needs must come from fast stores prepared in advance: how old the account is, how much it usually spends, the device, the seller's history. It applies clear rules first, such as blocked accounts, then a scoring model, and returns one of three answers: allow, deny, or step up with extra verification. If a lookup is slow, the service must still answer in time, so it uses whatever signals it has and treats missing data as riskier. Every decision is recorded with its inputs, so a wrong decision can be explained and the model improved.”
Weak answers call slow services in sequence with no time limit, or have no answer for what happens on a timeout.
“As soon as a card or bank number enters the system, I would exchange it for a token in one protected vault service, and the rest of the system works only with the token. The vault stores the real values encrypted, with keys managed separately and access logged. Logs are the most common leak, so I would make the logging library mask anything that looks like a card or account number by default, and test that by sending fake numbers through and searching the logs. Only a few services should be able to call the vault at all. Error messages and crash reports get the same treatment.”
Weak answers store the numbers in the main database with encryption and think that is enough, or forget logs entirely.
“First I would stop the job and make sure no further payout runs are scheduled. Then I would find the exact scope: every payout that appears twice, matched by seller and the underlying transactions, and the total amount. For recovery, I would work with finance and support. Where the second payout can be reversed with the bank, we reverse it. Otherwise we tell the seller clearly and recover from their next payouts in a fair way, not by taking their balance negative without warning. Then the fix: each payout gets a key from the period and seller, so a second run finds it already done and skips it.”
Weak answers quietly take the money back from balances or fix the job without cleaning up the duplicates.
“I value engineering where being right matters more than being clever. Money software has that property: a small mistake is repeated in thousands of transactions, auditors may ask about any of them years later, and fraud tests every gap. I have worked on your project, where I learned to write code that can be explained afterward. PayPal runs a wallet used to pay on shopping sites and to send money to friends, with buyers and sellers on both sides of a payment and disputes between them. I want to grow into an engineer trusted with that kind of system.”
Weak answers talk about scale or the brand and say nothing about correctness, fraud or the two sides.
No figures on this page: pay depends on the level, the city and the offer in front of you. When the offer comes, the free salary negotiation script helps with that part.
ClapAssist is an AI interview assistant for Mac and Windows. It listens to the interview on your computer and shows you what to say, in short lines you can read while you talk. Your live interview audio and screen are never stored. Your resume and notes are saved to your account so the app fills them in on any computer. It is hidden from screen share on every plan, including Free; only you can see it.