Create a charge Deprecated

Core Resources
Charges
Create a charge

This method is no longer recommended—use the Payment Intents API to initiate a new payment instead. Confirmation of the PaymentIntent creates the Charge object used to request payment.

Parameters

  • amountintegerRequired

    Amount intended to be collected by this payment. A positive integer representing how much to charge in the smallest currency unit (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. The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of $999,999.99).

  • currencyenumRequired

    Three-letter ISO currency code, in lowercase. Must be a supported currency.

  • customerstring

    The ID of an existing customer that will be charged in this request.

  • descriptionstring

    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.

  • metadataobject

    Set of key-value pairs 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.

  • receipt_emailstring

    The email address to which this charge’s receipt 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, 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.

  • shippingobject

    Shipping information for the charge. Helps prevent fraud on charges for physical goods.

    • shipping.addressobjectRequired

      Shipping address.

      • shipping.address.citystring

        City, district, suburb, town, or village.

      • shipping.address.countrystringRequired for calculating taxes

        Two-letter country code (ISO 3166-1 alpha-2).

      • shipping.address.line1string

        Address line 1 (e.g., street, PO Box, or company name).

      • shipping.address.line2string

        Address line 2 (e.g., apartment, suite, unit, or building).

      • shipping.address.postal_codestringRequired for calculating taxes

        ZIP or postal code.

      • shipping.address.statestring

        State, county, province, or region.

    • shipping.namestringRequired

      Recipient name.

    • shipping.carrierstring

      The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.

    • shipping.phonestring

      Recipient phone (including extension).

    • shipping.tracking_numberstring

      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.

  • sourcestring

    A payment source to be charged. This can be the ID of a card (i.e., credit or debit card), a bank account, a source, a token, or a connected account. For certain sources—namely, cards, bank accounts, and attached sources—you must also pass the ID of the associated customer.

  • statement_descriptorstring

    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.

    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_suffixstring

    Provides information about a card charge. Concatenated to the account’s statement descriptor prefix 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.

More parameters

  • application_fee_amountintegerConnect only

    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.

  • captureboolean

    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 later. Uncaptured charges expire after a set number of days (7 by default). For more information, see the authorizing charges and settling later documentation.

  • on_behalf_ofstringConnect only

    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.

  • radar_optionsobject

    Options to configure Radar. See Radar Session for more information.

    • radar_options.sessionstringsecret key only

      A Radar Session is a snapshot of the browser metadata and device details that help Radar make more accurate predictions on your payments.

  • transfer_dataobjectConnect only

    An optional dictionary including the account to automatically transfer to as part of a destination charge. See the Connect documentation for details.

    • transfer_data.destinationstringRequired

      ID of an existing, connected Stripe account.

    • transfer_data.amountinteger

      The amount transferred to the destination account, if specified. By default, the entire charge amount is transferred to the destination account.

  • transfer_groupstringConnect only

    A string that identifies this transaction as part of a group. For details, see Grouping transactions.

Returns

Returns the charge object if the charge succeeded. This call raises an error if something goes wrong. A common source of error is an invalid or expired card, or a valid card with insufficient available balance.

POST /v1/charges
curl https://api.stripe.com/v1/charges \
-u "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \
-d amount=1099 \
-d currency=usd \
-d source=tok_visa
Response
{
"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
}