             body["transfer_group"] = transferGroup
         }
         
-        return try request.send(method: .POST, path: StripeAPIEndpoint.charges.endpoint, body: body.queryParameters)
+        var headers: HTTPHeaders = [:]
+        if let directChargeAccount = directChargeAccount {
+            headers.replaceOrAdd(name: HTTPHeaderName.stripeAccount, value: directChargeAccount)
+        }
+            
+        return try request.send(method: .POST, path: StripeAPIEndpoint.charges.endpoint, body: body.queryParameters, headers: headers)
     }
     
     /// Retrieve a charge

                shipping: [String: Any]?,
                source: Any?,
                statementDescriptor: String?,
                transferData: [String: Any]?,
                transferGroup: String?) throws -> Future<StripeCharge>
    func retrieve(charge: String) throws -> Future<StripeCharge>

                       shipping: [String: Any]? = nil,
                       source: Any? = nil,
                       statementDescriptor: String? = nil,
                       directChargeAccount: String? = nil,
                       transferData: [String: Any]? = nil,
                       transferGroup: String? = nil) throws -> Future<StripeCharge> {
        return try create(amount: amount,
