# Create a charge This method is no longer recommended—use the [Payment Intents API](https://docs.stripe.com/docs/api/payment_intents.md) to initiate a new payment instead. Confirmation of the PaymentIntent creates the `Charge` object used to request payment. ## Returns Returns the charge object if the charge succeeded. This call raises [an error](https://docs.stripe.com/api/charges/create.md#errors) if something goes wrong. A common source of error is an invalid or expired card, or a valid card with insufficient available balance. ## Parameters - `amount` (integer, required) Amount intended to be collected by this payment. A positive integer representing how much to charge in the [smallest currency unit](https://docs.stripe.com/docs/currencies.md#zero-decimal) (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is $0.50 US or [equivalent in charge currency](https://docs.stripe.com/docs/currencies.md#minimum-and-maximum-charge-amounts). The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of $999,999.99). - `currency` (enum, required) Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). - `application_fee_amount` (integer, optional) A fee in cents that will be applied to the charge and transferred to the application owner’s Stripe account. The request must be made with an OAuth key or the `Stripe-Account` header in order to take an application fee. For more information, see the application fees [documentation](https://docs.stripe.com/docs/connect/direct-charges.md#collect-fees). - `capture` (boolean, optional) Whether to immediately capture the charge. Defaults to `true`. When `false`, the charge issues an authorization (or pre-authorization), and will need to be [captured](https://docs.stripe.com/api/charges/create.md#capture_charge) later. Uncaptured charges expire after a set number of days (7 by default). For more information, see the [authorizing charges and settling later](https://docs.stripe.com/docs/charges/placing-a-hold.md) documentation. - `customer` (string, optional) The ID of an existing customer that will be charged in this request. - `description` (string, optional) An arbitrary string which you can attach to a `Charge` object. It is displayed when in the web interface alongside the charge. Note that if you use Stripe to send automatic email receipts to your customers, your receipt emails will include the `description` of the charge(s) that they are describing. - `metadata` (object, optional) Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`. - `on_behalf_of` (string, optional) The Stripe account ID for which these funds are intended. Automatically set if you use the `destination` parameter. For details, see [Creating Separate Charges and Transfers](https://docs.stripe.com/docs/connect/separate-charges-and-transfers.md#settlement-merchant). - `radar_options` (object, optional) Options to configure Radar. See [Radar Session](https://docs.stripe.com/docs/radar/radar-session.md) for more information. - `radar_options.session` (string, optional) A [Radar Session](https://docs.stripe.com/docs/radar/radar-session.md) is a snapshot of the browser metadata and device details that help Radar make more accurate predictions on your payments. - `receipt_email` (string, optional) The email address to which this charge’s [receipt](https://docs.stripe.com/docs/dashboard/receipts.md) will be sent. The receipt will not be sent until the charge is paid, and no receipts will be sent for test mode charges. If this charge is for a [Customer](https://docs.stripe.com/docs/api/customers/object.md), the email address specified here will override the customer’s email address. If `receipt_email` is specified for a charge in live mode, a receipt will be sent regardless of your [email settings](https://dashboard.stripe.com/account/emails). - `shipping` (object, optional) Shipping information for the charge. Helps prevent fraud on charges for physical goods. - `shipping.address` (object, required) Shipping address. - `shipping.address.city` (string, optional) City, district, suburb, town, or village. - `shipping.address.country` (string, required for calculating taxes) Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)). - `shipping.address.line1` (string, optional) Address line 1, such as the street, PO Box, or company name. - `shipping.address.line2` (string, optional) Address line 2, such as the apartment, suite, unit, or building. - `shipping.address.postal_code` (string, required for calculating taxes) ZIP or postal code. - `shipping.address.state` (string, optional) State, county, province, or region. - `shipping.name` (string, required) Recipient name. - `shipping.carrier` (string, optional) The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc. - `shipping.phone` (string, optional) Recipient phone (including extension). - `shipping.tracking_number` (string, optional) The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas. - `source` (string, optional) A payment source to be charged. This can be the ID of a [card](https://docs.stripe.com/docs/api.md#cards) (i.e., credit or debit card), a [bank account](https://docs.stripe.com/docs/api.md#bank_accounts), a [source](https://docs.stripe.com/docs/api.md#sources), a [token](https://docs.stripe.com/docs/api.md#tokens), or a [connected account](https://docs.stripe.com/docs/connect/account-debits.md#charging-a-connected-account). For certain sources—namely, [cards](https://docs.stripe.com/docs/api.md#cards), [bank accounts](https://docs.stripe.com/docs/api.md#bank_accounts), and attached [sources](https://docs.stripe.com/docs/api.md#sources)—you must also pass the ID of the associated customer. - `statement_descriptor` (string, optional) For a non-card charge, text that appears on the customer’s statement as the statement descriptor. This value overrides the account’s default statement descriptor. For information about requirements, including the 22-character limit, see [the Statement Descriptor docs](https://docs.stripe.com/get-started/account/statement-descriptors.md). For a card charge, this value is ignored unless you don’t specify a `statement_descriptor_suffix`, in which case this value is used as the suffix. - `statement_descriptor_suffix` (string, optional) Provides information about a card charge. Concatenated to the account’s [statement descriptor prefix](https://docs.stripe.com/get-started/account/statement-descriptors.md#static) to form the complete statement descriptor that appears on the customer’s statement. If the account has no prefix value, the suffix is concatenated to the account’s statement descriptor. - `transfer_data` (object, optional) An optional dictionary including the account to automatically transfer to as part of a destination charge. [See the Connect documentation](https://docs.stripe.com/docs/connect/destination-charges.md) for details. - `transfer_data.destination` (string, required) ID of an existing, connected Stripe account. - `transfer_data.amount` (integer, optional) The amount transferred to the destination account, if specified. By default, the entire charge amount is transferred to the destination account. - `transfer_group` (string, optional) A string that identifies this transaction as part of a group. For details, see [Grouping transactions](https://docs.stripe.com/docs/connect/separate-charges-and-transfers.md#transfer-options). ```curl curl https://api.stripe.com/v1/charges \ -u "<>" \ -d amount=1099 \ -d currency=usd \ -d source=tok_visa ``` ```cli stripe charges create \ --amount=1099 \ --currency=usd \ --source=tok_visa ``` ```ruby client = Stripe::StripeClient.new("<>") charge = client.v1.charges.create({ amount: 1099, currency: 'usd', source: 'tok_visa', }) ``` ```python client = StripeClient("<>") charge = client.v1.charges.create({ "amount": 1099, "currency": "usd", "source": "tok_visa", }) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $charge = $stripe->charges->create([ 'amount' => 1099, 'currency' => 'usd', 'source' => 'tok_visa', ]); ``` ```java StripeClient client = new StripeClient("<>"); ChargeCreateParams params = ChargeCreateParams.builder() .setAmount(1099L) .setCurrency("usd") .setSource("tok_visa") .build(); Charge charge = client.v1().charges().create(params); ``` ```node const stripe = require('stripe')('<>'); const charge = await stripe.charges.create({ amount: 1099, currency: 'usd', source: 'tok_visa', }); ``` ```go sc := stripe.NewClient("<>") params := &stripe.ChargeCreateParams{ Amount: stripe.Int64(1099), Currency: stripe.String(stripe.CurrencyUSD), Source: &stripe.PaymentSourceSourceParams{Token: stripe.String("tok_visa")}, } result, err := sc.V1Charges.Create(context.TODO(), params) ``` ```dotnet var options = new ChargeCreateOptions { Amount = 1099, Currency = "usd", Source = "tok_visa", }; var client = new StripeClient("<>"); var service = client.V1.Charges; Charge charge = service.Create(options); ``` ### Response ```json { "id": "ch_3MmlLrLkdIwHu7ix0snN0B15", "object": "charge", "amount": 1099, "amount_captured": 1099, "amount_refunded": 0, "application": null, "application_fee": null, "application_fee_amount": null, "balance_transaction": "txn_3MmlLrLkdIwHu7ix0uke3Ezy", "billing_details": { "address": { "city": null, "country": null, "line1": null, "line2": null, "postal_code": null, "state": null }, "email": null, "name": null, "phone": null }, "calculated_statement_descriptor": "Stripe", "captured": true, "created": 1679090539, "currency": "usd", "customer": null, "description": null, "disputed": false, "failure_balance_transaction": null, "failure_code": null, "failure_message": null, "fraud_details": {}, "livemode": false, "metadata": {}, "on_behalf_of": null, "outcome": { "network_status": "approved_by_network", "reason": null, "risk_level": "normal", "risk_score": 32, "seller_message": "Payment complete.", "type": "authorized" }, "paid": true, "payment_intent": null, "payment_method": "card_1MmlLrLkdIwHu7ixIJwEWSNR", "payment_method_details": { "card": { "brand": "visa", "checks": { "address_line1_check": null, "address_postal_code_check": null, "cvc_check": null }, "country": "US", "exp_month": 3, "exp_year": 2024, "fingerprint": "mToisGZ01V71BCos", "funding": "credit", "installments": null, "last4": "4242", "mandate": null, "network": "visa", "three_d_secure": null, "wallet": null }, "type": "card" }, "receipt_email": null, "receipt_number": null, "receipt_url": "https://pay.stripe.com/receipts/payment/CAcaFwoVYWNjdF8xTTJKVGtMa2RJd0h1N2l4KOvG06AGMgZfBXyr1aw6LBa9vaaSRWU96d8qBwz9z2J_CObiV_H2-e8RezSK_sw0KISesp4czsOUlVKY", "refunded": false, "review": null, "shipping": null, "source_transfer": null, "statement_descriptor": null, "statement_descriptor_suffix": null, "status": "succeeded", "transfer_data": null, "transfer_group": null } ```