Payments sandbox
PayPal API Sandbox
PayPal almost never breaks in one clean request. It breaks in the flow: create something, read it back, handle the next state, then figure out why the event came in late or weird.
Payments integration focusOpenAPI spec-driven setupStateful sandbox direction
Why PayPal breaks the usual mock setup
Payment APIs are where static mocks start to feel fake really quickly. The first request is usually not the hard part. The hard part is everything after that: what state got written, what the next read shows, what failed, what webhook fired, what did not.
How to think about it
My bias here is pretty simple: start with the PayPal spec, then stop hand-building three separate layers around it if you do not have to. Use one place to explore the docs and one place to test the ugly parts of the flow.