public StripeObject CreateCharge(decimal amount, string currency, string customerId, string description = null, IDictionary<string, object> metadata = null) { Require.Argument("amount", amount); Require.Argument("currency", currency); Require.Argument("customerId", customerId); if (amount < 0.5M) throw new ArgumentOutOfRangeException("amount", amount, "Amount must be at least 50 cents"); var request = new RestRequest(); request.Method = Method.POST; request.Resource = "charges"; request.AddParameter("amount", Convert.ToInt32(amount * 100M)); request.AddParameter("currency", currency); request.AddParameter("customer", customerId); if (description.HasValue()) request.AddParameter("description", description); request.WithMetadata(metadata); return ExecuteObject(request); }