# Create a charge

Creates a new charge. 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 token)
won't actually be charged, although everything else will occur as if in live mode.

Endpoint: POST /charges
Version: 1.0.0
Security: BasicAuth

## Request fields (application/x-www-form-urlencoded):

  - `amount` (integer, required)
    Charge amount in the minor units of the given currency. For example, 10 EUR is `1000` and 10 JPY is `10`.
    Example: 499

  - `currency` (string, required)
    Charge currency as a three-letter ISO 4217 code.
    Example: USD

  - `type` (string)
    Stored-credential (credential-on-file) indicator describing how the charge is initiated: `customer_initiated` (cardholder, unscheduled), `merchant_initiated` (merchant, unscheduled), `first_recurring` (first charge of a recurring series), or `subsequent_recurring` (a follow-up recurring charge). Set this for stored-credential and MIT transactions so they are flagged correctly to the card network.
    Enum: "first_recurring", "subsequent_recurring", "merchant_initiated", "customer_initiated"

  - `description` (string)
    Optional description shown on the charge.
    Example: Example charge

  - `customerId` (string)
    Identifier of the customer to associate with this charge. Required when charging a customer's existing card. If new card data is provided together with `customerId`, the card is added to the customer on a successful charge.
    Example: cust_AoR0wvgntQWRUYMdZNLYMz5R

  - `card` (any)

  - `card.number` (string, required)
    The card number.
    Example: 4242424242424242

  - `card.expMonth` (string, required)
    Two-digit expiration month.
    Example: 12

  - `card.expYear` (string, required)
    Four-digit expiration year.
    Example: 2030

  - `card.cvc` (string, required)
    Card verification code.
    Example: 123

  - `card.cardholderName` (string)
    Name of the cardholder.
    Example: John Doe

  - `card.addressLine1` (string)
    Example: 1234 Market St

  - `card.addressLine2` (string)
    Example: Suite 500

  - `card.addressCity` (string)
    Example: San Francisco

  - `card.addressState` (string)
    Example: CA

  - `card.addressZip` (string)
    Example: 94103

  - `card.addressCountry` (string)
    Country represented as a three-letter ISO country code.
    Example: USA

  - `card.fraudCheckData` (object)
    Additional data used for fraud protection.

  - `card.fraudCheckData.ipAddress` (string)
    IP address of the user.
    Example: 203.0.113.42

  - `card.fraudCheckData.ipCountry` (string)
    Country derived from the user's IP address (two-letter ISO country code).
    Example: US

  - `card.fraudCheckData.email` (string)
    E-mail address of the user.
    Example: john.doe@example.com

  - `card.fraudCheckData.phone` (string)
    Phone number of the user.
    Example: +14155550132

  - `card.fraudCheckData.userAgent` (string)
    Value of the "User-Agent" HTTP header sent by the user.
    Example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36

  - `card.fraudCheckData.acceptLanguage` (string)
    Value of the "Accept-Language" HTTP header sent by the user.
    Example: en-US,en;q=0.9

  - `card.fraudCheckData.browserFingerprint` (string)
    Hashed device identifier, available if Shift4.js was used to create the token.
    Example: 35a05229011ab99930545a2e1b2edc4e

  - `paymentMethod` (any)

  - `paymentMethod.type` (string, required)
    The type of the payment method (for example `ach`, `blik`, `ideal`).
    Example: ideal

  - `flow` (object)
    Payment-process details specific to the payment method.

  - `flow.returnUrl` (string)
    URL the customer is redirected to after completing payment on an external site (required for redirect payment methods). A `clientObjectId` query parameter is appended so the charge status can be checked with `shift4.js`.
    Example: https://example.com/return

  - `captured` (boolean)
    Whether to immediately capture the charge. When `false` the charge is only authorized (or pre-authorized) and must be captured within 5 days.
    Example: true

  - `options` (object)
    Authorization options.

  - `options.authorizationType` (string)
    `pre` (pre-authorization, can be incremented) or `final` (default). Use `pre` together with `captured=false` to enable incremental authorization.
    Enum: "pre", "final"

  - `billing` (object)
    Billing details. Cannot be used together with `paymentMethod`.

  - `billing.name` (string)
    Example: John Doe

  - `billing.email` (string)
    Example: john.doe@example.com

  - `billing.phone` (string)
    Example: +14155550132

  - `billing.vat` (string)
    Tax identification number
    Example: US123456789

  - `billing.address` (object)
    A postal address.

  - `billing.address.line1` (string)
    Example: 1234 Market St

  - `billing.address.line2` (string)
    Example: Suite 500

  - `billing.address.zip` (string)
    Example: 94103

  - `billing.address.city` (string)
    Example: San Francisco

  - `billing.address.state` (string)
    Example: CA

  - `billing.address.country` (string)
    Two-letter ISO 3166-1 country code
    Example: US

  - `shipping` (object)
    Shipping details for the order.

  - `shipping.name` (string)
    Example: John Doe

  - `shipping.phone` (string)
    Example: +14155550132

  - `threeDSecure` (object)
    3D Secure options.

  - `threeDSecure.requireAttempt` (boolean)
    Fail the charge when 3D Secure verification was not attempted.

  - `threeDSecure.requireEnrolledCard` (boolean)
    Fail the charge if the card is not enrolled for 3D Secure.

  - `threeDSecure.requireSuccessfulLiabilityShiftForEnrolledCard` (boolean)
    Fail the charge when the card supports 3D Secure but verification was not completed successfully.

  - `threeDSecure.external` (object)
    Used when authenticating with an external 3DS service.

  - `threeDSecure.external.version` (string)
    3DS protocol version.
    Enum: "2.1.0", "2.2.0"

  - `threeDSecure.external.eci` (string)
    Electronic Commerce Indicator, e.g. `05`.
    Example: 05

  - `threeDSecure.external.authenticationValue` (string)
    Also known as CAVV, AAV, or UCAF.

  - `threeDSecure.external.dsTransactionId` (string)
    dsTransID received in the ARes (required for 3DS 2).

  - `threeDSecure.external.acsTransactionId` (string)
    acsTransID received in the ARes (required for 3DS 2).

  - `threeDSecure.external.status` (string)
    3DS authentication status.
    Enum: "Y", "N", "A", "U", "R", "E"

  - `splits` (array)
    Split part of the charge amount to other (platform) merchants, for example to record a tip. Requires a platform account; the merchant the money is transferred to must be a platform.

  - `splits.type` (string, required)
    Split type.
    Enum: "tip"

  - `splits.merchant` (string, required)
    Identifier of the platform merchant the money is transferred to.
    Example: mrc_gTDpVZkFqOqSqD3MWRQkGYI7

  - `splits.amount` (integer, required)
    Amount to transfer, in the smallest currency unit. Must be positive.
    Example: 100

  - `recipient` (object)
    Recipient details, required for account-funding / top-up transactions.

  - `recipient.firstName` (string, required)
    Recipient's first name.
    Example: John

  - `recipient.lastName` (string, required)
    Recipient's last name.
    Example: Doe

  - `recipient.accountNumber` (string, required)
    Identifier of the account being topped up in the merchant's system.
    Example: acct_1029384756

  - `recipient.dateOfBirth` (string)
    Recipient's date of birth in `YYYY-MM-DD` format.
    Example: 1985-04-12

  - `sender` (object)
    Sender details, required for top-up transactions when the sender differs from the recipient.

  - `sender.firstName` (string, required)
    Sender's first name.
    Example: Jane

  - `sender.lastName` (string, required)
    Sender's last name.
    Example: Roe

  - `sender.dateOfBirth` (string, required)
    Sender's date of birth in `YYYY-MM-DD` format.
    Example: 1990-09-30

  - `sender.referenceNumber` (string, required)
    Identifier of the sender's account in the merchant's system.
    Example: ref_5647382910

  - `sender.source` (string, required)
    Where the money being transferred came from. Required for AFTs in the US.
    Enum: "credit_card", "debit_card", "prepaid_card", "cash", "deposit_account", "credit_account", "mobile_money_account"

  - `merchantAccountId` (string)
    Identifier of the merchant account to use to process this charge.
    Example: ma_RHCN1yhubdBpSCgKcYAGb0xH

  - `external` (object)
    External references to attach to the charge.

  - `external.vendorReference` (string)
    Additional transaction identifier used throughout Shift4's systems.
    Example: custom_vendor_reference

  - `external.schemeTransactionId` (string)
    External, unique reference of the transaction within a payment card network.
    Example: MCC123456789012

  - `collectionMode` (string)
    Indicates how the order was collected for this charge: `online_order` (via browser), `telephone_order` (via phone), or `mail_order` (via email or postal mail).
    Enum: "online_order", "telephone_order", "mail_order"

## Response 200 fields (application/json):

  - `id` (string)
    Unique identifier for the charge
    Example: char_ORVCrwOrTkGsDwM3H50OIW7Q

  - `created` (integer)
    Unix timestamp (seconds) when the charge was created
    Example: 1701432000

  - `objectType` (string)
    Object type identifier
    Enum: "charge"

  - `amount` (integer)
    Charge amount in the smallest currency unit (e.g., cents)
    Example: 499

  - `amountRefunded` (integer)
    Amount refunded so far, in the smallest currency unit
    Example: 0

  - `currency` (string)
    Three-letter ISO 4217 currency code
    Example: USD

  - `description` (string)
    Optional description of the charge
    Example: Example charge

  - `type` (string)
    The stored-credential (credential-on-file) indicator sent to the card network, describing how the charge was initiated. This affects how the transaction is flagged for card-scheme stored-credential rules:
- `customer_initiated` - cardholder-initiated, unscheduled (a customer-initiated payment using a stored credential).
- `merchant_initiated` - merchant-initiated, unscheduled (an MIT the merchant triggers without the customer present).
- `first_recurring` - the first charge of a recurring/subscription series (cardholder-initiated, recurring).
- `subsequent_recurring` - a follow-up charge in a recurring series.
    Enum: "first_recurring", "subsequent_recurring", "merchant_initiated", "customer_initiated"

  - `status` (string)
    Current status of the charge
    Enum: "successful", "pending", "failed"

  - `captured` (boolean)
    Whether the charge has been captured
    Example: true

  - `refunded` (boolean)
    Whether the charge has been fully refunded
    Example: false

  - `refunds` (array)
    List of refunds issued against this charge.

  - `refunds.id` (string)
    Unique identifier for the refund
    Example: re_bYBGkBSsSfcalm1DLqm8KBUQ

  - `refunds.created` (integer)
    Unix timestamp (seconds) when the refund was created
    Example: 1711929600

  - `refunds.objectType` (string)
    Object type identifier
    Enum: "refund"

  - `refunds.amount` (integer)
    Refund amount in minor units of a given currency. For example 10€ is represented as 1000 and 10¥ is represented as 10.
    Example: 1000

  - `refunds.currency` (string)
    Refund currency represented as a three-letter ISO currency code.
    Example: USD

  - `refunds.charge` (string)
    ID of the charge associated with this refund.
    Example: char_bYBGkBSsSfcalm1DLqm8KBUQ

  - `refunds.reason` (string)
    Reason for the refund.
    Enum: "fraudulent", "expired"

  - `refunds.status` (string)
    Current status of the refund.
    Enum: "successful", "pending", "failed"

  - `disputed` (boolean)
    Whether the charge is currently disputed
    Example: false

  - `dispute` (object)
    The dispute object, present when the charge has been disputed.

  - `dispute.id` (string)
    Unique identifier for the dispute
    Example: disp_GOqyiOF9575FUYMZ73gjNrcY

  - `dispute.created` (integer)
    Unix timestamp when the dispute was created
    Example: 1701432000

  - `dispute.objectType` (string)
    Object type identifier
    Enum: "dispute"

  - `dispute.updated` (integer)
    Unix timestamp when the dispute was last updated
    Example: 1701432000

  - `dispute.amount` (integer)
    Dispute amount in minor units of a given currency. For example, 10€ is represented as `1000` and 10¥ is represented as `10`.
    Example: 1000

  - `dispute.currency` (string)
    Dispute currency represented as a three-letter ISO currency code.
    Example: USD

  - `dispute.status` (string)
    Current status of this dispute.
    Enum: "RETRIEVAL_REQUEST_NEW", "RETRIEVAL_REQUEST_RESPONSE_UNDER_REVIEW", "RETRIEVAL_REQUEST_REPRESENTED", "CHARGEBACK_NEW", "CHARGEBACK_RESPONSE_UNDER_REVIEW", "CHARGEBACK_REPRESENTED_SUCCESSFULLY", "CHARGEBACK_REPRESENTED_UNSUCCESSFULLY", "CHARGEBACK_PREVENTED"

  - `dispute.reason` (string)
    Reason why the customer created this dispute.
    Enum: "FRAUDULENT", "UNRECOGNIZED", "DUPLICATE", "SUBSCRIPTION_CANCELED", "PRODUCT_NOT_RECEIVED", "PRODUCT_UNACCEPTABLE", "CREDIT_NOT_PROCESSED", "GENERAL"

  - `dispute.acceptedAsLost` (boolean)
    Information on whether this dispute is closed and, as a result of it, automatically lost.
    Example: false

  - `dispute.charge` (any)
    Charge associated with this dispute.

  - `dispute.charge.paymentMethod` (object, required)
    The payment method used for this charge.
    Example: {"id":"pm_BokS87jDShjASDkjhdsak4kl","created":1415810511,"objectType":"payment_method","clientObjectId":"client_pm_kjdS8DSj73DSkjhKJHDKSAna","customerId":"cust_BokS87jDShjASDkjhdsak4kl","type":"ach","…

  - `dispute.charge.paymentMethod.type` (string, required)
    Enum: "ach"

  - `dispute.evidence` (object)
    Evidence object that was created for this dispute.

  - `dispute.evidence.productDescription` (string)
    A description of a product or service purchased by the customer including any details provided to the customer at the time of purchase.
    Example: Exclusive black shoes

  - `dispute.evidence.customerName` (string)
    The name of the customer.
    Example: John Doe

  - `dispute.evidence.customerEmail` (string)
    Customer's email address provided during the purchasing process.
    Example: john.doe@example.com

  - `dispute.evidence.customerPurchaseIp` (string)
    The IP address used by the customer while purchasing.
    Example: 203.0.113.10

  - `dispute.evidence.customerSignature` (string)
    A scanned image or a photo of a document showing the customer's signature (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.billingAddress` (string)
    The billing address provided by the customer in the purchasing process.
    Example: 1234 Market St, San Francisco, CA 94103, US

  - `dispute.evidence.receipt` (string)
    Receipts and messages sent to the customer with the charge notification (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.customerCommunication` (string)
    Any communication with a customer that can help you win the dispute. These could be emails with proof of receiving the product or confirmation that the service was provided to the customer on the specified date (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.serviceDate` (string)
    The date on which a customer received the purchased service, displayed in a human-readable format.
    Example: 2023-12-01

  - `dispute.evidence.serviceDocumentation` (string)
    The documentation proving that the service was provided to the customer. It could be a copy of a signed contract, etc. (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.duplicateChargeId` (string)
    The ID of the duplicated charge.
    Example: char_ORVCrwOrTkGsDwM3H50OIW7Q

  - `dispute.evidence.duplicateChargeDocumentation` (string)
    Any documents with proof that there were two or more separated transactions. Include shipping details, receipt, packing list, etc. (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.duplicateChargeExplanation` (string)
    Any information indicating that transactions were separated to prove that the prior charge wasn't duplicated.
    Example: The two charges are for different orders.

  - `dispute.evidence.refundPolicy` (string)
    Your refund policy, as shown to the customer (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.refundPolicyDisclosure` (string)
    An explanation showing how and when the customer agreed to your refund policy.
    Example: The refund policy was presented at checkout.

  - `dispute.evidence.refundRefusalExplanation` (string)
    An explanation of why the customer is not entitled to a refund.
    Example: The product was delivered as described.

  - `dispute.evidence.cancellationPolicy` (string)
    Your subscription cancellation policy, as shown to the customer (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.cancellationPolicyDisclosure` (string)
    An explanation of how and when the customer agreed to your cancellation policy.
    Example: The cancellation policy was accepted during sign-up.

  - `dispute.evidence.cancellationRefusalExplanation` (string)
    An explanation showing that the customer continued using the product after the date they claimed to have stopped using it.
    Example: The customer kept using the service after cancellation date.

  - `dispute.evidence.accessActivityLogs` (string)
    Any evidence of the customer's activity after the date they claim to have cancelled the subscription, such as server or activity logs, IP addresses, etc. (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.shippingAddress` (string)
    The shipping address to which a physical product was delivered. To maximize your chances of winning the dispute, the address should match a verified billing address.
    Example: 1234 Market St, San Francisco, CA 94103, US

  - `dispute.evidence.shippingDate` (string)
    The date on which a physical product began its route to the shipping address, displayed in a human-readable format and prior to the date of the dispute.
    Example: 2023-12-01

  - `dispute.evidence.shippingCarrier` (string)
    The name of the delivery service that shipped a physical product, eg. UPS, FedEx. If there are multiple carriers for the purchase, separate them with commas.
    Example: UPS

  - `dispute.evidence.shippingTrackingNumber` (string)
    The number given by the delivery service for a physical product. If there are multiple tracking numbers for one purchase, separate them with commas.
    Example: 1Z999AA10123456784

  - `dispute.evidence.shippingDocumentation` (string)
    Documentation with proof that cardholder received a product at the address provided in the purchasing process. This could be a document with the full shipping address, such as the shipment receipt, etc. (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidence.uncategorizedText` (string)
    An explanation with further evidence that doesn't fit into any of the fields provided above.
    Example: Additional context about the purchase.

  - `dispute.evidence.uncategorizedFile` (string)
    Any files or documents with further evidence that doesn't fit into any of the fields provided above (ID of a file upload).
    Example: file_2nayTQXBBjaVEPVtCwGCbqOj

  - `dispute.evidenceDetails` (object)
    Details about the evidence submitted for this dispute.

  - `dispute.evidenceDetails.hasEvidence` (boolean)
    Whether any evidence was provided for this dispute.
    Example: true

  - `dispute.evidenceDetails.submissionCount` (integer)
    Number of times the evidence was submitted for review.
    Example: 1

  - `dispute.evidenceDetails.dueBy` (integer)
    Unix timestamp of the deadline for submitting evidence.
    Example: 1702432000

  - `flow` (object)
    Details of the payment process for payment methods that require additional customer action (redirect, QR code, mobile app, etc.).

  - `flow.nextAction` (string)
    What the client must do next. `redirect` (send the customer to `flow.redirect.redirectUrl`), `wait` (payment processing, poll for change), `qr_code` (display `flow.qrCode.imgSrc`), or `mobile_app_confirmation` (customer confirms in the Swish app).
    Enum: "redirect", "wait", "qr_code", "app_redirect", "mobile_app_confirmation", "none"

  - `flow.returnUrl` (string)
    URL the customer is redirected to after completing the payment.
    Example: https://example.com/return

  - `flow.qrCode` (object)
    Present when `nextAction` is `qr_code`.

  - `flow.qrCode.imgSrc` (string)
    Base64-encoded QR code image to display to the customer. The QR code encodes the URL that opens the Swish mobile application.
    Example: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...

  - `flow.redirect` (object)
    Present when `nextAction` is `redirect` or `app_redirect`.

  - `flow.redirect.redirectUrl` (string)
    URL the customer should be redirected to in order to complete the payment.
    Example: https://external-bank.example.com/authorize/abc123

  - `customerId` (string)
    ID of the customer associated with this charge
    Example: cust_AoR0wvgntQWRUYMdZNLYMz5R

  - `subscriptionId` (string)
    ID of the subscription that generated this charge, if any.
    Example: sub_vrEaVmRDW0oKz8ycyy8Yc4l5

  - `clientObjectId` (string)
    Client-facing identifier that can be used with `shift4.js` to check the charge status from the browser.
    Example: client_char_JeKrBOWDvtRa7KSVuDQ1IBzW

  - `options` (object)
    Authorization options for the charge.

  - `options.authorizationType` (string)
    `pre` for a pre-authorization that can be incremented, `final` for a standard authorization.
    Enum: "pre", "final"

  - `fraudDetails` (object)
    Fraud detection details

  - `fraudDetails.status` (string)
    Overall fraud assessment for the charge.
    Enum: "safe", "suspicious", "fraudulent"

  - `fraudDetails.score` (integer)
    Percentage chance (0-100) that the charge is fraudulent.
    Example: 0

  - `arn` (string)
    Acquirer Reference Number assigned to the settled transaction.
    Example: 1087908829370718

  - `schemeTransactionId` (string)
    Identifier of the transaction in the card scheme's network.
    Example: MCC123456789012

  - `paymentAccountReference` (string)
    Payment Account Reference (PAR) - a unique, 29-character non-sensitive identifier that links a credit or debit card's Primary Account Number (PAN) to its associated payment tokens.
    Example: V0010013819982170748000000001

  - `aft` (object)
    Account Funding Transaction details, for charges that move funds to another account.

  - `aft.funding` (string)
    Whether the card scheme processed this charge as an Account Funding Transaction.
    Enum: "supported", "not_supported"

  - `aft.sender` (object)
    The party sending the funds. Echoes the `sender` details supplied on the charge request.

  - `aft.sender.firstName` (string)
    Sender's first name.
    Example: Jane

  - `aft.sender.lastName` (string)
    Sender's last name.
    Example: Roe

  - `aft.sender.dateOfBirth` (string)
    Sender's date of birth in `YYYY-MM-DD` format.
    Example: 1990-09-30

  - `aft.sender.referenceNumber` (string)
    The merchant's own identifier for the sender. Required for AFTs related to South Africa.
    Example: ref_5647382910

  - `aft.sender.sourceOfFunds` (string)
    Where the money being transferred came from. Required for AFTs in the US.
    Enum: "credit_card", "debit_card", "prepaid_card", "cash", "deposit_account", "credit_account", "mobile_money_account"

  - `aft.sender.address` (object)
    Sender's address. State is required in the US and Canada; ZIP is required when the country is the US or Canada.

  - `aft.sender.address.line1` (string)
    Example: 1234 Market St

  - `aft.sender.address.line2` (string)
    Example: Suite 500

  - `aft.sender.address.zip` (string)
    Example: 94103

  - `aft.sender.address.city` (string)
    Example: San Francisco

  - `aft.sender.address.state` (string)
    Example: CA

  - `aft.sender.address.country` (string)
    Two-letter ISO 3166-1 country code
    Example: US

  - `aft.recipient` (object)
    The party receiving the funds. Echoes the `recipient` details supplied on the charge request.

  - `aft.recipient.firstName` (string)
    Recipient's first name.
    Example: John

  - `aft.recipient.lastName` (string)
    Recipient's last name.
    Example: Doe

  - `aft.recipient.dateOfBirth` (string)
    Recipient's date of birth in `YYYY-MM-DD` format.
    Example: 1985-04-12

  - `aft.recipient.accountNumberMasked` (string)
    The account being funded, masked to the last four characters. When a card number was supplied, it cannot be the card being charged.
    Example: **********1234

  - `aft.recipient.cardId` (string)
    Identifier of the card the funds were sent to, when the recipient account was supplied as a card.
    Example: card_j2mzocqk3zsdcmxpszkqm3l7

  - `aft.recipient.address` (object)
    Recipient's address. Street and city are required in Canada, the US, Colombia and Nicaragua, and whenever the recipient is also the sender; state is required in those same four countries; ZIP is required when the country is the US or Canada.

  - `authCode` (string)
    Authorization code returned by the issuer.
    Example: 123456

  - `threeDSecureInfo` (object)
    3D Secure verification details

  - `threeDSecureInfo.amount` (integer)
    Amount (minor units) used in 3D Secure.
    Example: 499

  - `threeDSecureInfo.currency` (string)
    Currency used in 3D Secure.
    Example: USD

  - `threeDSecureInfo.enrolled` (boolean)
    Whether the card used supports 3D Secure.
    Example: false

  - `threeDSecureInfo.liabilityShift` (string)
    Outcome of the liability shift: `null` (not started/in progress), `successful`, `failed` (supported but not completed), or `not_possible` (not supported).
    Enum: "successful", "failed", "not_possible"

  - `threeDSecureInfo.resultReason` (string)
    Reason for a liability shift error.
    Enum: "rejected", "abandoned"

  - `threeDSecureInfo.authenticationFlow` (string)
    How the issuer authenticated the customer.
    Enum: "frictionless", "challenge"

  - `threeDSecureInfo.version` (string)
    3D Secure protocol version.
    Example: 2.2.0

  - `avsCheck` (object)
    Address Verification Service result, present if the address was verified.

  - `avsCheck.result` (string)
    Enum: "full_match", "partial_match", "no_match", "not_provided", "unavailable"

  - `aniCheck` (object)
    Account Name Inquiry result (Visa). Returned only with zero authentication requests.

  - `aniCheck.result` (string)
    Enum: "full_match", "partial_match", "no_match", "not_verified", "not_supported"

  - `cvvCheck` (object)
    CVV/CVC verification result.

  - `cvvCheck.result` (string)
    Enum: "match", "no_match", "not_verified", "not_provided", "not_supported"

  - `failureCode` (string)
    Error code describing why the charge failed. Only present in failed charges; see the `code` attribute of the error object for possible values.
    Example: null

  - `failureMessage` (string)
    Human-readable message describing why the charge failed. Only present in failed charges.
    Example: null

  - `failureIssuerDeclineCode` (string)
    Decline code supplied by the card issuer. Only present in failed charges.

  - `adviceCode` (string)
    Advice on how to proceed with a declined charge. Only present for declined charges.
    Enum: "do_not_try_again"

  - `networkAdviceCode` (string)
    Raw advice code received from the issuer or card network. Only present for declined charges.

  - `collectionMode` (string)
    How the order was collected for this charge.
    Enum: "online_order", "telephone_order", "mail_order"

  - `billing` (object)
    Billing details for the payer.

  - `billing.name` (string)
    Example: John Doe

  - `billing.email` (string)
    Example: john.doe@example.com

  - `billing.phone` (string)
    Example: +14155550132

  - `billing.vat` (string)
    Tax identification number
    Example: US123456789

  - `shipping` (object)
    Shipping details for the order.

  - `shipping.name` (string)
    Example: John Doe

  - `shipping.phone` (string)
    Example: +14155550132

  - `external` (object)
    External references attached to the charge.

  - `external.vendorReference` (string)
    Additional transaction identifier used throughout Shift4's systems.
    Example: custom_vendor_reference

  - `multibanco` (object)
    Additional information for Multibanco payments. Only present when `paymentMethod.type` is `multibanco`.

  - `multibanco.reference` (string)
    The reference of the Multibanco transaction.
    Example: 123456789

  - `multibanco.entity` (string)
    Identifies the receiving entity of the transaction.
    Example: 12345

  - `splits` (array)
    List of charge splits, present when the charge amount was split across multiple recipients (platforms). Charge splits require a platform account, so this attribute is absent for merchants that are not part of a platform.

  - `splits.id` (string)
    Unique identifier for the split.
    Example: spl_ORVCrwOrTkGsDwM3H50OIW7Q

  - `splits.created` (integer)
    Unix timestamp (seconds) when the split was created.
    Example: 1701432000

  - `splits.objectType` (string)
    Object type identifier.
    Enum: "charge_split"

  - `splits.charge` (string)
    The identifier of the charge within which the split was created.
    Example: char_ORVCrwOrTkGsDwM3H50OIW7Q

  - `splits.type` (string)
    Type of split.
    Enum: "tip"

  - `splits.amount` (integer)
    Split amount in the smallest currency unit (e.g., cents).
    Example: 200

  - `splits.currency` (string)
    Three-letter ISO 4217 currency code.
    Example: USD

  - `splits.merchant` (string)
    The merchant identifier to whom the money was transferred (always the platform).
    Example: acct_ORVCrwOrTkGsDwM3H50OIW7Q

  - `merchantAccountId` (string)
    Identifier of the merchant account used to process this charge.
    Example: ma_RHCN1yhubdBpSCgKcYAGb0xH

  - `card` (object, required)
    The card used for this charge.

  - `card.id` (string)
    Unique identifier for the card
    Example: card_8P7OWXA5xiTS1ISnyZcum1KV

  - `card.created` (integer)
    Unix timestamp
    Example: 1711929600

  - `card.objectType` (string)
    Enum: "card"

  - `card.first6` (string)
    First six digits of the card number
    Example: 424242

  - `card.last4` (string)
    Last four digits of the card number
    Example: 4242

  - `card.fingerprint` (string)
    Unique fingerprint for this card number
    Example: e3d8suyIDgFg3pE7

  - `card.expMonth` (string)
    Two-digit expiration month
    Example: 12

  - `card.expYear` (string)
    Four-digit expiration year
    Example: 2027

  - `card.cardholderName` (string)
    Name of the cardholder
    Example: John Doe

  - `card.brand` (string)
    Card brand
    Enum: "Visa", "MasterCard", "American Express", "Discover", "JCB", "Diners Club", "Unknown"

  - `card.type` (string)
    Card type
    Enum: "Credit Card", "Debit Card", "Prepaid Card", "Unknown"

  - `card.country` (string)
    Two-letter ISO 3166-1 country code of the card's issuing country
    Example: US

  - `card.issuer` (string)
    Name of the bank that issued the card
    Example: Card Issuer Name

  - `card.customerId` (string)
    ID of the customer this card belongs to, if any
    Example: cust_AoR0wvgntQWRUYMdZNLYMz5R

  - `card.fraudCheckData` (object)
    Fraud-protection data captured when the card was created.

  - `card.fraudCheckData.ipAddress` (string)
    IP address of the user.
    Example: 203.0.113.42

  - `card.fraudCheckData.ipCountry` (string)
    Country derived from the user's IP address (two-letter ISO country code).
    Example: US

  - `card.fraudCheckData.email` (string)
    E-mail address of the user.
    Example: john.doe@example.com

  - `card.fraudCheckData.phone` (string)
    Phone number of the user.
    Example: +14155550132

  - `card.fraudCheckData.userAgent` (string)
    Value of the "User-Agent" HTTP header sent by the user.
    Example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36

  - `card.fraudCheckData.acceptLanguage` (string)
    Value of the "Accept-Language" HTTP header sent by the user.
    Example: en-US,en;q=0.9

  - `card.fraudCheckData.browserFingerprint` (string)
    Hashed device identifier, available if Shift4.js was used to create the token.
    Example: 35a05229011ab99930545a2e1b2edc4e

  - `card.merchantAccountId` (string)
    Identifier of the merchant account used to create this card.
    Example: ma_RHCN1yhubdBpSCgKcYAGb0xH

  - `card.addressLine1` (string)
    First line of the billing address associated with the card.
    Example: 1234 Market St

  - `card.addressLine2` (string)
    Second line of the billing address associated with the card.
    Example: Suite 500

  - `card.addressCity` (string)
    City of the billing address associated with the card.
    Example: San Francisco

  - `card.addressState` (string)
    State of the billing address associated with the card.
    Example: CA

  - `card.addressZip` (string)
    ZIP or postal code of the billing address associated with the card.
    Example: 94103

  - `card.addressCountry` (string)
    Country of the billing address associated with the card, represented as a three-letter ISO country code.
    Example: USA

  - `card.fastCredit` (object)
    Fast credit (fast payout) support status for this card.

  - `card.fastCredit.supported` (boolean)
    Indicates whether the card supports fast credit.
    Example: true

  - `card.fastCredit.updated` (integer)
    Unix timestamp of the last time the fast credit status was refreshed.
    Example: 1701432000

## Response 400 fields (application/json):

  - `error` (object)

  - `error.type` (string)
    Error type
    Enum: "invalid_request", "card_error", "gateway_error"

  - `error.code` (string)
    Machine-readable error code
    Example: invalid_number

  - `error.message` (string)
    Human-readable error message
    Example: Requested object does not exist

  - `error.chargeId` (string)
    ID of the charge associated with this error (if applicable)
    Example: char_ORVCrwOrTkGsDwM3H50OIW7Q

## Response 402 fields (application/json):

  - `error` (object)

  - `error.type` (string)
    Error type
    Enum: "invalid_request", "card_error", "gateway_error"

  - `error.code` (string)
    Machine-readable error code
    Example: invalid_number

  - `error.message` (string)
    Human-readable error message
    Example: Requested object does not exist

  - `error.chargeId` (string)
    ID of the charge associated with this error (if applicable)
    Example: char_ORVCrwOrTkGsDwM3H50OIW7Q

