C# Stripe: Create a Charge

Back to Index

To charge a credit card, you create a Charge object. If your API key is in test mode, the supplied payment source (e.g., card) won't actually be charged, though everything else will occur as if in live mode. (Stripe assumes that the charge would have completed successfully).

Documentation: https://stripe.com/docs/api/curl#create_charge

CURL Command

curl -X POST  https://api.stripe.com/v1/charges \
   -u STRIPE_SECRET_KEY: \
   -d amount=2000 \
   -d currency=usd \
   -d source=tok_visa \
   -d description="Charge for aiden.jones@example.com"

C# Example

Chilkat.Rest rest = new Chilkat.Rest();
bool success;

//  URL: https://api.stripe.com/v1/charges
bool bTls = true;
int port = 443;
bool bAutoReconnect = true;
success = rest.Connect("api.stripe.com",port,bTls,bAutoReconnect);
if (success != true) {
    Debug.WriteLine("ConnectFailReason: " + Convert.ToString(rest.ConnectFailReason));
    Debug.WriteLine(rest.LastErrorText);
    return;
}

rest.SetAuthBasic("STRIPE_SECRET_KEY","");

rest.AddQueryParam("amount","2000");
rest.AddQueryParam("currency","usd");
rest.AddQueryParam("source","tok_visa");
rest.AddQueryParam("description","Charge for aiden.jones@example.com");

string strResponseBody = rest.FullRequestFormUrlEncoded("POST","/v1/charges");
if (rest.LastMethodSuccess != true) {
    Debug.WriteLine(rest.LastErrorText);
    return;
}

Chilkat.JsonObject jsonResponse = new Chilkat.JsonObject();
jsonResponse.Load(strResponseBody);

string id;
string object;
int amount;
int amount_refunded;
bool application;
bool application_fee;
string balance_transaction;
bool captured;
int created;
string currency;
bool customer;
string description;
bool destination;
bool dispute;
bool failure_code;
bool failure_message;
bool invoice;
bool livemode;
bool on_behalf_of;
bool order;
bool outcome;
bool paid;
bool receipt_email;
bool receipt_number;
bool refunded;
string refundsObject;
bool refundsHas_more;
int refundsTotal_count;
string refundsUrl;
bool review;
bool shipping;
string sourceId;
string sourceObject;
bool sourceAddress_city;
bool sourceAddress_country;
bool sourceAddress_line1;
bool sourceAddress_line1_check;
bool sourceAddress_line2;
bool sourceAddress_state;
bool sourceAddress_zip;
bool sourceAddress_zip_check;
string sourceBrand;
string sourceCountry;
bool sourceCustomer;
bool sourceCvc_check;
bool sourceDynamic_last4;
int sourceExp_month;
int sourceExp_year;
string sourceFingerprint;
string sourceFunding;
string sourceLast4;
bool sourceName;
bool sourceTokenization_method;
bool source_transfer;
bool statement_descriptor;
string status;
bool transfer_group;
int i;
int count_i;

id = jsonResponse.StringOf("id");
object = jsonResponse.StringOf("object");
amount = jsonResponse.IntOf("amount");
amount_refunded = jsonResponse.IntOf("amount_refunded");
application = jsonResponse.IsNullOf("application");
application_fee = jsonResponse.IsNullOf("application_fee");
balance_transaction = jsonResponse.StringOf("balance_transaction");
captured = jsonResponse.BoolOf("captured");
created = jsonResponse.IntOf("created");
currency = jsonResponse.StringOf("currency");
customer = jsonResponse.IsNullOf("customer");
description = jsonResponse.StringOf("description");
destination = jsonResponse.IsNullOf("destination");
dispute = jsonResponse.IsNullOf("dispute");
failure_code = jsonResponse.IsNullOf("failure_code");
failure_message = jsonResponse.IsNullOf("failure_message");
invoice = jsonResponse.IsNullOf("invoice");
livemode = jsonResponse.BoolOf("livemode");
on_behalf_of = jsonResponse.IsNullOf("on_behalf_of");
order = jsonResponse.IsNullOf("order");
outcome = jsonResponse.IsNullOf("outcome");
paid = jsonResponse.BoolOf("paid");
receipt_email = jsonResponse.IsNullOf("receipt_email");
receipt_number = jsonResponse.IsNullOf("receipt_number");
refunded = jsonResponse.BoolOf("refunded");
refundsObject = jsonResponse.StringOf("refunds.object");
refundsHas_more = jsonResponse.BoolOf("refunds.has_more");
refundsTotal_count = jsonResponse.IntOf("refunds.total_count");
refundsUrl = jsonResponse.StringOf("refunds.url");
review = jsonResponse.IsNullOf("review");
shipping = jsonResponse.IsNullOf("shipping");
sourceId = jsonResponse.StringOf("source.id");
sourceObject = jsonResponse.StringOf("source.object");
sourceAddress_city = jsonResponse.IsNullOf("source.address_city");
sourceAddress_country = jsonResponse.IsNullOf("source.address_country");
sourceAddress_line1 = jsonResponse.IsNullOf("source.address_line1");
sourceAddress_line1_check = jsonResponse.IsNullOf("source.address_line1_check");
sourceAddress_line2 = jsonResponse.IsNullOf("source.address_line2");
sourceAddress_state = jsonResponse.IsNullOf("source.address_state");
sourceAddress_zip = jsonResponse.IsNullOf("source.address_zip");
sourceAddress_zip_check = jsonResponse.IsNullOf("source.address_zip_check");
sourceBrand = jsonResponse.StringOf("source.brand");
sourceCountry = jsonResponse.StringOf("source.country");
sourceCustomer = jsonResponse.IsNullOf("source.customer");
sourceCvc_check = jsonResponse.IsNullOf("source.cvc_check");
sourceDynamic_last4 = jsonResponse.IsNullOf("source.dynamic_last4");
sourceExp_month = jsonResponse.IntOf("source.exp_month");
sourceExp_year = jsonResponse.IntOf("source.exp_year");
sourceFingerprint = jsonResponse.StringOf("source.fingerprint");
sourceFunding = jsonResponse.StringOf("source.funding");
sourceLast4 = jsonResponse.StringOf("source.last4");
sourceName = jsonResponse.IsNullOf("source.name");
sourceTokenization_method = jsonResponse.IsNullOf("source.tokenization_method");
source_transfer = jsonResponse.IsNullOf("source_transfer");
statement_descriptor = jsonResponse.IsNullOf("statement_descriptor");
status = jsonResponse.StringOf("status");
transfer_group = jsonResponse.IsNullOf("transfer_group");
i = 0;
count_i = jsonResponse.SizeOfArray("refunds.data");
while (i < count_i) {
    jsonResponse.I = i;
    i = i + 1;
}

Sample JSON Response Body

{
  "id": "ch_1BnETJGswQrCoh0XTs0EERBj",
  "object": "charge",
  "amount": 100,
  "amount_refunded": 0,
  "application": null,
  "application_fee": null,
  "balance_transaction": "txn_1BnETJGswQrCoh0XxO2tGYr7",
  "captured": false,
  "created": 1516662781,
  "currency": "usd",
  "customer": null,
  "description": "My First Test Charge (created for API docs)",
  "destination": null,
  "dispute": null,
  "failure_code": null,
  "failure_message": null,
  "fraud_details": {},
  "invoice": null,
  "livemode": false,
  "metadata": {},
  "on_behalf_of": null,
  "order": null,
  "outcome": null,
  "paid": true,
  "receipt_email": null,
  "receipt_number": null,
  "refunded": false,
  "refunds": {
    "object": "list",
    "data": [
    ],
    "has_more": false,
    "total_count": 0,
    "url": "/v1/charges/ch_1BnETJGswQrCoh0XTs0EERBj/refunds"
  },
  "review": null,
  "shipping": null,
  "source": {
    "id": "card_18ropuGswQrCoh0XjCJ5Zvma",
    "object": "card",
    "address_city": null,
    "address_country": null,
    "address_line1": null,
    "address_line1_check": null,
    "address_line2": null,
    "address_state": null,
    "address_zip": null,
    "address_zip_check": null,
    "brand": "Visa",
    "country": "US",
    "customer": null,
    "cvc_check": null,
    "dynamic_last4": null,
    "exp_month": 8,
    "exp_year": 2017,
    "fingerprint": "F9mANtIt1TaukpRJ",
    "funding": "credit",
    "last4": "4242",
    "metadata": {},
    "name": null,
    "tokenization_method": null
  },
  "source_transfer": null,
  "statement_descriptor": null,
  "status": "succeeded",
  "transfer_group": null
}