---
title: "Update transaction"
method: PATCH
path: "/transactions/{transaction_token}"
tags: ["transactions"]
---

# Update transaction

`PATCH /transactions/{transaction_token}`

Run an inquiry for a transaction's status at the gateway and update
the state of the Spreedly transaction with the given token. Only
for supported gateways. See our [syncing transactions guide](https://developer.spreedly.com/docs/syncing-your-gateway-transaction) for more information.

## Response `200`

Successful

- UpdateTransactionResponse
  - `transaction` object
    - `token` string — The token uniquely identifying this transaction at Spreedly
    - `succeeded` boolean — `true` if the transaction request was successfully executed, `false` otherwise
    - `message` string — A human-readable string indicating the result of the transaction
    - `gateway_transaction_id` string — The id of the transaction at the gateway. To be used when corresponding with the gateway or reconciling transactions
    - `retain_on_success` boolean — If the payment method was set to be retained on successful completion of the transaction. To determine if the payment method was actually retained, see the `payment_method/storage_state` field
    - `payment_method_added` string — If the payment method was added as part of this transaction (i.e. a direct pass-in of the payment information) vs. using an already tokenized payment method
    - `response` object — Unmodified details of the gateway response, including the `message` and `error_code`, if applicable. For failed transactions these fields can help determine the root cause
    - `payment_method` PaymentMethod
      - `token` string — The token identifying the payment method in the Spreedly vault
      - `created_at` string — The time the payment method token was created
      - `updated_at` string — The time the payment method token was last updated
      - `email` string — The email address of the customer associated with this credit card
      - `storage_state` string — The `storage_state` (retained, redacted, cached, used) of the payment method
      - `test` boolean — `true` if this payment method is a test payment method and cannot be used against real gateways or receivers
      - `metadata` object — metadata key-value pairs (limit 25). Keys are limited to 50 characters. Values are limited to 500 characters and cannot contain compounding data types
      - `callback_url` string — The URL where Spreedly will attempt delivery of asynchronous results for 3DS and offsite transactions. Transaction results are posted in the format specified by `callback_format` if provided or XML if `callback_format` is not present or null. (default: `null`)
      - `last_four_digits` string — The last four digits of the credit card number. This can be displayed to the user.
      - `first_six_digits` string — The first six digits of the credit card number. This can be displayed to the user.
      - `card_type` string — The [type](https://developer.spreedly.com/docs/supported-payment-methods), or brand, of the card. Please see the `card_type_mapping` function below for more detail.
      - `first_name` string — The first name of the cardholder
      - `last_name` string — The last name of the cardholder
      - `month` string — The expiration month
      - `year` string — The expiration year
      - `address1` string — The first line of the billing address
      - `address2` string — The second line of the billing address
      - `city` string — The city of the billing address
      - `state` string — The state of the billing address
      - `zip` string — The zip code of the billing address
      - `country` string — The country code of the billing address
      - `phone_number` string — The phone number of the billing address
      - `company` string — The company of the cardholder
      - `full_name` string — The full name of the cardholder.
      - `eligible_for_card_updater` string — `true` if this payment method should be included in Account Updater
      - `shipping_address1` string — The first line of the shipping address
      - `shipping_address2` string — The second line of the shipping address
      - `shipping_city` string — The city of the shipping address
      - `shipping_state` string — The state of the shipping address
      - `shipping_zip` string — The zip code of the shipping address
      - `shipping_country` string — The country code of the shipping address
      - `issuer_identification_number` string — The numbers of the PAN required to identify the card issuer.
      - `click_to_pay` string — `true` if the card was tokenized using Click to Pay
      - `managed` string — The value indicating the payment method's management status.
      - `payment_method_type` string — The type of this payment method, e.g., `credit_card`, `bank_account`, `apple_pay`, `google_pay`, `third_party_token`, etc…
      - `errors` string — If the payment method is invalid (missing required fields, etc…), there will be associated error messages here
      - `fingerprint` string — An identifying string that will match all cards in the environment with the same PAN
      - `verification_value` string — The obscured verification value (CVV), e.g., XXX or XXXX
      - `number` string — The obscured credit card number, e.g., XXXX-XXXX-XXXX-4444
      - `bin_metadata` object — BIN metadata is available in the response if the card is enrolled in Advanced Vault. See [BIN metadata](https://developer.spreedly.com/docs/bin-metadata) for more information.
        - `card_brand` string
        - `card_category` string
        - `card_type` string
        - `issuing_bank` string
        - `issuing_country_iso_number` string
        - `issuing_country_iso_a2_code` string
        - `issuing_country_iso_a3_code` string
        - `issuing_country_iso_name` string
        - `issuing_bank_phone_number` string
        - `issuing_bank_website` string
        - `bin_type` string
        - `regulated` string
        - `max_pan_length` string
        - `message` string
      - `subscribed_to_mastercard_abu` boolean — `true` if this payment method is subscribed to Mastercard ABU updating service
      - `last_successfully_used` string, date-time, nullable — The time (UTC) the payment method was last successfully transacted with. The following transaction types are considered: Authorization, Purchase, Verification, GeneralCredit, OffsiteVerification, or OffsitePurchase
    - `merchant_profile_key` string — The token of the Merchant Profile associated with the gateway used for the transaction
    - `sub_merchant_key` string — The token of the sub-merchant associated with the transaction.
    - `gateway_specific_response_fields` object — A hash containing unique optional fields that a gateway may return based on certain customized options.
    - `transaction_metadata` object — The hash of key/value pairs that was included in the transaction request body.
    - `sca_authentication` string — The details of the SCA Authentication transaction created if performing a Spreedly Global 3DS2 transaction. See the [SCA Authentication Show](https://developer.spreedly.com/reference/authenticate) details for more information on this object.
    - `payment_snapshot` PaymentSnapshot — When Recover is attempted, provides an overview of the results at the time of the current transaction. For more information on Recover, see [the guide](https://developer.spreedly.com/docs/recover).
      - `gateway_tokens` string[] — List of all gateway tokens on which the transaction could be attempted. Includes the primary gateway token and all Recover gateway tokens.
      - `attempts` integer — Number of times the transaction has been attempted.
      - `messages` object — Optional field used to communicate information about different Recover situations, for example, falling back to outage only mode if a gateway is primary gateway is unsupported.
      - `mode` string — The Recover mode used, either `standard` or `outage_only`.
      - `custom_error_used` boolean — `true` if the transaction used a custom error in the recovery decision process.
      - `override_default_error_codes` boolean — `true` if the custom error configuration was used instead of Spreedly's default error configuration.
      - `created_at` string — The time the payment_snapshot was created.
      - `updated_at` string — The time the payment_snapshot was updated.
      - `payment_token` string — The token corresponding to the Payment object, containing all information about the Recover chain.
      - `previous_transaction_tokens` string[] — List of all previous transactions associated with the Recover attempt.
    - `protection_provider_key` string — The token of the Protection Provider that was used for this transaction.
    - `protection_parameters` ProtectionParameters — Additional fields that are accepted by the Protection provider, including a `test_scenario` object to indicate valid Protect test flow options. Please refer to our [Protect guide](https://developer.spreedly.com/docs/protect) to learn more.
      - `test_scenario` object — The protection test scenario
        - `scenario` 'protect_approved' | 'protect_sca_recommended_challenge' | 'protect_sca_recommended_authenticated' | 'protect_sca_recommended_not_authenticated' | 'protect_declined' — The test scenario to run
      - `fraud_token` string — Forter fraud token. Emitted when running a fraud lifecycle from [the Spreedly iFrame](https://developer.spreedly.com/docs/iframe-api-lifecycle). Required for web transactions only.
      - `forter_mobile_uid` string — Mobile UID. The device identifier such as IMEI in android or identifier for vendor in iOS. This should match the deviceId sent via the mobile events API. Required for mobile transactions only.
      - `user_agent` string — Customer's User agent
      - `cart_items` object[], required — A list of all items purchased and shipping details
        - `name` string, required — Item name
        - `quantity` number, required — Item quantity
        - `type` 'TANGIBLE' | 'NON_TANGIBLE', required — TANGIBLE if physical item, NON_TANGIBLE if any other product
        - `price` string, required — Final amount due for purchase, after all discounts and promotions
      - `delivery_type` 'PHYSICAL' | 'DIGITAL', required — Type of delivery: PHYSICAL for any type of shipped goods, DIGITAL for non-shipped goods (services, gift cards etc.)
      - `delivery_method` string, required — Delivery method chosen by customer such as postal service, email, in game transfer, etc.
      - `customer_account_id` string — Customer's account UID in merchant's site (leave empty if guest)
      - `customer_account_type` 'GUEST' | 'PRIVATE' | 'BUSINESS' | 'VIP' | 'MERCHANT_OPERATED' | 'TRIAL' | 'MERCHANT_EMPLOYEE' | 'PREMIUM_PAID' | 'SMALL_BUSINESS' | 'AGENT' | 'BUSINESS_PRIVATE' | 'BUSINESS_PREMIUM_PAID' — Customer account type
      - `customer_account_creation_date` number — Customer account creation date in seconds since unix epoch (UTC, Jan 1, 1970)
      - `billing_name` string — The customer full name. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_first_name` string — The customer first name. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_last_name` string — The customer last name. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `email` string — The customer email address. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_country` string — The customer billing country. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_address1` string — The customer billing address line 1. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_address2` string — The customer billing address line 2. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_city` string — The customer billing city. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_zip` string — The customer billing zip code. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_state` string — The customer billing state. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `billing_phone_number` string — The customer billing phone number. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_name` string — The customer's full name for shipping. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_first_name` string — The customer's first name for shipping. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_last_name` string — The customer's last name for shipping. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_email` string — The customer's email address for shipping. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_country` string — The customer shipping country. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_address1` string — The customer shipping address line 1. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_address2` string — The customer shipping address line 2. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_city` string — The customer shipping city. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_zip` string — The customer shipping zip code. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_state` string — The customer shipping state. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
      - `shipping_phone_number` string — The customer shipping phone number. If available, this value will be pulled from the payment_method associated with this transaction. Otherwise, it should be provided here.
    - `original_transaction_updated` boolean — `true` if the transaction was updated in the request

## Other responses

- `401` — Unauthorized
- `404` — Not found
- `422` — Unprocessable Entity

---

[API](https://skmtc.net/spreedly/apis/spreedly-api-v1.md) · [All operations](https://skmtc.net/spreedly/apis/spreedly-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/spreedly/spreedly-api-v1/versions/72ba4e23e65c/schema)
