I am on vacation this week in NYC just carved out a little time to do this one. It was fun: Contact contact = [SELECT Id, Phone, Email, FirstName, LastName FROM Contact LIMIT 1 ]; //StripeCustomer customer = (StripeCustomer) JSON.deserialize(jsonResponse, StripeCustomer.class); StripeCustomer customer = new StripeCustomer(); customer.id = contact.Id; customer.name = contact.FirstName + '' + contact.LastName; customer.email = contact.Email; customer.phone = contact.Phone; //String jsonContact = JSON.serialize(customer); //System.debug(jsonContact); String urlEncodedBody = 'email=' + EncodingUtil.urlEncode(contact.Email, 'UTF-8') + '&name=' + EncodingUtil.urlEncode(contact.FirstName + ' ' + contact.LastName, 'UTF-8'); HttpRequest request = new HttpRequest(); request.setEndpoint('https://api.stripe.com/v1/customers'); request.setMethod('POST'); String stripeSecretKey = 'sk_test_51SQ7hORqNlM7fTBZn8RVPJXQ5jjc0bVY2wYDcyotJUhiJouuetaudghZ5YpvjW1lN87N3lwWcHKXbnAszl1hNpuE00U9sIWK0u'; request.setHeader('Content-Type', 'application/x-www-form-urlencoded'); request.setHeader('Authorization', 'Bearer ' + stripeSecretKey); request.setBody(urlEncodedBody); Http http = new Http(); HttpResponse response = http.send(request); System.debug(response.getBody());