Adding idempotency support to Stripe's API was one of the things I built while an intern in 2015. We've since rewritten it almost entirely, but many the technical decisions made in 2015 still stand.
One of the things that IETF doesn't specify ("an appropriate response") is that Stripe's Idempotency API has a response body has the latest rendering of the resource. Here's what I mean:
# Set tax exempt status
curl /v1/customers/cus_AJ6m5vWl7scnn6 \
-H "Idempotency-Key: aaaaaaaaaa" \
-d tax_exempt=reverse
→ {id: 'cus_AJ6m5vWl7scnn6', object: 'customer', tax_exempt: 'reverse', ...}
# An unrelated request sets the customer's email
curl /v1/customers/cus_AJ6m5vWl7scnn6 \
-H "Idempotency-Key: bbbbbbbbbb" \
-d email='foo@bar.com'
→ {id: 'cus_AJ6m5vWl7scnn6', object: 'customer', tax_exempt: 'reverse', email: 'foo@bar.com', ...}
# Set tax exempt status with the first idempotency key:
curl /v1/customers/cus_AJ6m5vWl7scnn6 \
-H "Idempotency-Key: aaaaaaaaaa" \
-d tax_exempt=reverse
# The customer is re-rendered on the latest version
→ {id: 'cus_AJ6m5vWl7scnn6', object: 'customer', tax_exempt: 'reverse', email: 'foo@bar.com', ...}