---
title: "Venmo Saved Checkout"
method: POST
path: "/checkout/venmo/token/{merchantId}"
tags: ["checkout"]
---

# Venmo Saved Checkout

`POST /checkout/venmo/token/{merchantId}`

Initiates the checkout for Venmo payment with a saved account

## Path parameters

- `merchantId` string, required

## Headers

- `x-coinflow-auth-session-key` string, required
- `x-device-id` string
- `x-coinflow-client-ip` string

## Request body

- SavedVenmoCheckoutArgs
  - `subtotal` union, required
    - CurrencyCents
      - `cents` integer, required
      - `currency` 'USD' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'GBP' | 'GEL' | 'GHS' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MWK' | 'MVR' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RWF' | 'SAR' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SLE' | 'SLL' | 'SOS' | 'SRD' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL' | 'CDF' | 'ERN' | 'FKP' | 'KPW' | 'RUB' | 'SBD' | 'SHP' | 'SSP' | 'VES', required
    - Cents
      - `cents` integer, required
    - TokenSubtotal
      - `address` string, required — The tokens address Solana - Token Mint Address Evm - Token Contract Address
      - `amount` union, required — Number of tokens
        - number, double
        - string
      - `decimals` number, double — Number of decimals for the token
  - `webhookInfo` AnyObject
    - `example` string
  - `chargebackProtectionData` CartItemClassOmitted[] — Cart item details required for Coinflow Chargeback Protection. Required if the merchant uses chargeback protection.
    - union
      - PickNftCartItemExcludeKeyofnftCartItemSellingPriceOrItemClass — From T, pick a set of properties whose keys are in the union K
        - `productName` string, required — The name of the related product
        - `productType` 'inGameProduct' | 'gameOfSkill' | 'dataStorage' | 'computingResources' | 'sportsTicket' | 'eSportsTicket' | 'musicTicket' | 'conferenceTicket' | 'virtualSportsTicket' | 'virtualESportsTicket' | 'virtualMusicTicket' | 'virtualConferenceTicket' | 'alcohol' | 'DLC' | 'subscription' | 'fundACause' | 'realEstate' | 'computingContract' | 'digitalArt' | 'topUp' | 'ownershipContract' | 'inGameCurrency' | 'digitalCollectibles' | 'digitalCollectiblesMarketplace' | 'digitalGiftingMarketplace' | 'sweepstakes' | 'virtualSportsEvents' | 'contractInvoicing' | 'onlineCasino' | 'cryptoOnramp' | 'gaming' | 'travelDocuments' | 'musicStreaming' | 'digitalContent' | 'eBooks' | 'digitalSubscriptionContent', required
        - `listPrice` PickNftCartItemExcludeKeyofnftCartItemSellingPriceOrItemClassListPrice — The item's list price
          - `currency` string
          - `valueInCurrency` number, double
        - `quantity` number, double, required — The number of units sold
        - `rawProductData` AnyObject
          - `example` string
        - `seller` SellerInfo
          - `id` string — Id of the seller
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `lastName` string — Last name Example: Lois
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `rawSellerData` RecordStringAny — Construct a type with a set of properties K of type T
        - `transactionHistory` TransactionHistoryItem[]
          - `txType` string, required
          - `chain` string, required
          - `paymentAmount` string, required
          - `paymentToken` string, required
          - `to` string, required
          - `from` string, required
          - `registryContract` string, required
          - `assetID` string, required
          - `txTime` string, required
          - `blockNumber` number, double, required
          - `txHash` string, required
      - PickGiftCardCartItemExcludeKeyofGiftCardCartItemListPrice — From T, pick a set of properties whose keys are in the union K
        - `brand` string — The name of the brand
        - `sellingPrice` PickGiftCardCartItemExcludeKeyofGiftCardCartItemListPriceSellingPrice, required
          - `currency` string, required
          - `valueInCurrency` number, double, required
        - `itemClass` 'giftCard', required
        - `productType` 'giftCard', required
        - `quantity` number, double, required — The number of units sold
        - `rawProductData` RecordStringAny — Construct a type with a set of properties K of type T
        - `seller` SellerInfo
          - `id` string — Id of the seller
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `lastName` string — Last name Example: Lois
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `rawSellerData` RecordStringAny — Construct a type with a set of properties K of type T
        - `id` string, required — The cart items’s unique ID
        - `itemFulfillment` 'digital' | 'physical', required — How the product was fulfilled.
        - `sku` string — The stock-keeping unit (SKU) number
        - `categories` string[] — The category in the site/app in which the item was classified (e.g., fashion)
        - `isGift` boolean
        - `recipientInfo` RecipientInfo
          - `accountId` string — The ID of the account that will receive the purchased goods
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `gender` string — Gender Example: female
          - `lastName` string — Last name Example: Lois
          - `message` string — The message that the recipient will receive
          - `phoneInfo` PhoneInfo — Phone information structure
            - `carrier` string — The mobile carrier Example: T-Mobile
            - `countryCode` string, required — The country code (leading `+` is optional) Example: 42 Pattern: ^\+?[0-9]+$
            - `phone` string, required — The phone number without the country code or hyphens Example: 2025550169 Pattern: ^[0-9]+$
          - `shippingAddress` CartItemAddress — Address structure
            - `country` string — Country code specified as a two letter code according to ISO 3166 Alpha-2 Between 2 and 2 characters Example: US Pattern: ^[A-Z]{2}$
            - `state` string — The state or province Example: PA
            - `city` string — The city or locality Example: Pittsburgh
            - `street` string — The street name Example: Baker St
            - `postalCode` string — The address postal code
          - `wallet` RecipientInfoWallet — The crypto wallet that will receive the funds
            - `custodialType` 'custodial' | 'nonCustodial' | 'unknown', required — The type of the wallet Allowed values: custodial, nonCustodial, unknown Example: custodial
            - `blockchain` string, required — The blockchain on which the transaction was made Example: BTC Pattern: ^[A-Z0-9-]+$
            - `address` string, required — The crypto wallet address that will receive the funds
        - `expectedDeliveryDelay` number, double — The expected delay in delivery, in hours
        - `isPresetAmount` boolean — Represents whether the item amount is taken from a preset list, e.g. 25, 50, 100, etc. or whether it was a different amount, e.g. 27
      - CryptoCartItem — Represents a crypto item in a shopping cart
        - `itemClass` 'crypto', required — Denotes the cart item class. The item schema is chosen based on this value. Allowed value: crypto Example: crypto
        - `id` string — The cart items's unique ID Example: 5de33332-546a-4171-8988-2a43d2bfe9c6
        - `rawProductData` AnyObject
          - `example` string
        - `units` string, required — The amount in the crypto currency which is specified in the `cryptoCurrency` property Example: 1.04112 Pattern: ^[0-9]+(\.[0-9]+)?$
        - `cryptoCurrency` string, required — The crypto-currency symbol (uppercase) Example: BTC Pattern: ^[A-Z0-9-]+$
        - `unitPrice` CryptoCartItemUnitPrice, required — The price per 1 unit
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
        - `expectedDeliveryDelay` number, double — The expected delay in delivery, in hours Min value: 0
        - `recipientInfo` RecipientInfo, required
          - `accountId` string — The ID of the account that will receive the purchased goods
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `gender` string — Gender Example: female
          - `lastName` string — Last name Example: Lois
          - `message` string — The message that the recipient will receive
          - `phoneInfo` PhoneInfo — Phone information structure
            - `carrier` string — The mobile carrier Example: T-Mobile
            - `countryCode` string, required — The country code (leading `+` is optional) Example: 42 Pattern: ^\+?[0-9]+$
            - `phone` string, required — The phone number without the country code or hyphens Example: 2025550169 Pattern: ^[0-9]+$
          - `shippingAddress` CartItemAddress — Address structure
            - `country` string — Country code specified as a two letter code according to ISO 3166 Alpha-2 Between 2 and 2 characters Example: US Pattern: ^[A-Z]{2}$
            - `state` string — The state or province Example: PA
            - `city` string — The city or locality Example: Pittsburgh
            - `street` string — The street name Example: Baker St
            - `postalCode` string — The address postal code
          - `wallet` RecipientInfoWallet — The crypto wallet that will receive the funds
            - `custodialType` 'custodial' | 'nonCustodial' | 'unknown', required — The type of the wallet Allowed values: custodial, nonCustodial, unknown Example: custodial
            - `blockchain` string, required — The blockchain on which the transaction was made Example: BTC Pattern: ^[A-Z0-9-]+$
            - `address` string, required — The crypto wallet address that will receive the funds
        - `seller` SellerInfo
          - `id` string — Id of the seller
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `lastName` string — Last name Example: Lois
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `rawSellerData` RecordStringAny — Construct a type with a set of properties K of type T
      - MoneyTopUpCartItem — Represents a money top-up item in a shopping cart
        - `itemClass` 'moneyTopUp', required — Denotes the cart item class. The item schema is chosen based on this value. Allowed value: moneyTopUp Example: moneyTopUp
        - `id` string — The cart items's unique ID Example: 5de33332-546a-4171-8988-2a43d2bfe9c6
        - `rawProductData` RecordStringAny — Construct a type with a set of properties K of type T
        - `sellingPrice` CurrencyAmount, required — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `recipientInfo` RecipientInfo
          - `accountId` string — The ID of the account that will receive the purchased goods
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `gender` string — Gender Example: female
          - `lastName` string — Last name Example: Lois
          - `message` string — The message that the recipient will receive
          - `phoneInfo` PhoneInfo — Phone information structure
            - `carrier` string — The mobile carrier Example: T-Mobile
            - `countryCode` string, required — The country code (leading `+` is optional) Example: 42 Pattern: ^\+?[0-9]+$
            - `phone` string, required — The phone number without the country code or hyphens Example: 2025550169 Pattern: ^[0-9]+$
          - `shippingAddress` CartItemAddress — Address structure
            - `country` string — Country code specified as a two letter code according to ISO 3166 Alpha-2 Between 2 and 2 characters Example: US Pattern: ^[A-Z]{2}$
            - `state` string — The state or province Example: PA
            - `city` string — The city or locality Example: Pittsburgh
            - `street` string — The street name Example: Baker St
            - `postalCode` string — The address postal code
          - `wallet` RecipientInfoWallet — The crypto wallet that will receive the funds
            - `custodialType` 'custodial' | 'nonCustodial' | 'unknown', required — The type of the wallet Allowed values: custodial, nonCustodial, unknown Example: custodial
            - `blockchain` string, required — The blockchain on which the transaction was made Example: BTC Pattern: ^[A-Z0-9-]+$
            - `address` string, required — The crypto wallet address that will receive the funds
        - `topUpAmount` CurrencyAmount, required — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `quantity` number, double, required — Quantity Example: 2
        - `isPresetAmount` boolean, required — Represents whether the item amount is taken from a preset list, e.g. 25, 50, 100, etc. or whether it was a different amount, e.g. 27
      - TravelCartItem — Represents a travel booking item in a shopping cart
        - `itemClass` 'travel', required — Denotes the cart item class. The item schema is chosen based on this value. Allowed value: travel Example: travel
        - `id` string — The cart items's unique ID Example: 5de33332-546a-4171-8988-2a43d2bfe9c6
        - `rawProductData` AnyObject
          - `example` string
        - `sellingPrice` CurrencyAmount, required — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `listPrice` CurrencyAmount — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `recipientInfo` RecipientInfo
          - `accountId` string — The ID of the account that will receive the purchased goods
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `gender` string — Gender Example: female
          - `lastName` string — Last name Example: Lois
          - `message` string — The message that the recipient will receive
          - `phoneInfo` PhoneInfo — Phone information structure
            - `carrier` string — The mobile carrier Example: T-Mobile
            - `countryCode` string, required — The country code (leading `+` is optional) Example: 42 Pattern: ^\+?[0-9]+$
            - `phone` string, required — The phone number without the country code or hyphens Example: 2025550169 Pattern: ^[0-9]+$
          - `shippingAddress` CartItemAddress — Address structure
            - `country` string — Country code specified as a two letter code according to ISO 3166 Alpha-2 Between 2 and 2 characters Example: US Pattern: ^[A-Z]{2}$
            - `state` string — The state or province Example: PA
            - `city` string — The city or locality Example: Pittsburgh
            - `street` string — The street name Example: Baker St
            - `postalCode` string — The address postal code
          - `wallet` RecipientInfoWallet — The crypto wallet that will receive the funds
            - `custodialType` 'custodial' | 'nonCustodial' | 'unknown', required — The type of the wallet Allowed values: custodial, nonCustodial, unknown Example: custodial
            - `blockchain` string, required — The blockchain on which the transaction was made Example: BTC Pattern: ^[A-Z0-9-]+$
            - `address` string, required — The crypto wallet address that will receive the funds
        - `lodging` TravelLodging, required — The lodging details of the travel booking
          - `reservationId` string, required — Hotel reservation id Example: X36Q9C
          - `nights` number, double, required — The number of nights booked in the reservation Min value: 1 Example: 2
          - `checkInDate` string, required — The check-in date Example: 2022-05-02
          - `checkInHour` string, required — The hour of day in which the check-in is done Example: 18 Pattern: ^([01][0-9]|2[0-3])$
          - `hotel` TravelLodgingHotel, required — The booked hotel details
            - `name` string, required — The name of the hotel Example: The Plaza Hotel
            - `country` string, required — The two-letter code of the country in which the hotel is located Example: US Pattern: ^[A-Z]{2}$
            - `city` string, required — The city in which the hotel is located Example: New York
          - `wereExtrasPurchased` boolean, required — Indicates whether extras were purchased in the reservation
          - `isRefundable` boolean, required — Indicates whether the reservation is refundable
          - `highestRoomType` string, required — The most luxurious room booked in the reservation Example: Presidential Suite
          - `numberOfRooms` number, double, required — The number of rooms booked in the reservation Min value: 1 Example: 2
          - `numberOfGuests` number, double, required — The number of guests in the reservation Min value: 1 Example: 4
          - `numberOfKids` number, double, required — The number of kids, out of the number of guests in the reservation Min value: 0 Example: 2
        - `pnr` string, required — The flight ticket's PNR code Example: X36Q9C
        - `trip` TravelTrip, required — The trip details of the travel booking
          - `numberOfFlights` number, double, required — The number of flights in the trip Min value: 1 Example: 2
          - `numberOfCheckedBags` number, double, required — The number of checked bags Min value: 0 Example: 1
          - `firstWayDestination` string, required — The first-way destination's three-letter IATA airport code Example: JFK Pattern: ^[A-Z]{3}$
          - `isRoundTrip` boolean, required — `true` if the trip is a round-trip Example: true
          - `highestClass` 'economy' | 'luxurious', required — `luxurious` if the highest bought travel class in the trip is a luxury class (business/first), `economy` otherwise Example: luxurious
          - `isFlexibleTicket` boolean, required — True if the trip ticket is a flexible ticket Example: true
          - `wereExtrasPurchased` boolean, required — True if extras were included in the trip purchase Example: true
        - `firstFlight` TravelFirstFlight, required — The first flight details of the trip
          - `numberOfTravelers` number, double, required — The number of travelers in the first flight Min value: 1 Example: 2
          - `departureTime` number, double, required — The timestamp of the departure, in *milliseconds* since the unix epoch Example: 1551398400000
          - `departureAirport` string, required — The first-flight departure airport's three-letter IATA code Example: JFK Pattern: ^[A-Z]{3}$
          - `duration` number, double, required — The first-flight duration, in hours Min value: 0 Example: 3.5
          - `flightNumber` string, required — The alphanumeric flight code Example: BA2491A Pattern: ^[A-Z0-9]+$
      - FlightTicketCartItem — Represents a flight ticket item in a shopping cart
        - `itemClass` 'flightTicket', required — Denotes the cart item class. The item schema is chosen based on this value. Allowed value: flightTicket Example: flightTicket
        - `id` string — The cart items's unique ID Example: 5de33332-546a-4171-8988-2a43d2bfe9c6
        - `rawProductData` AnyObject
          - `example` string
        - `sellingPrice` CurrencyAmount, required — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `listPrice` CurrencyAmount — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `recipientInfo` RecipientInfo
          - `accountId` string — The ID of the account that will receive the purchased goods
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `gender` string — Gender Example: female
          - `lastName` string — Last name Example: Lois
          - `message` string — The message that the recipient will receive
          - `phoneInfo` PhoneInfo — Phone information structure
            - `carrier` string — The mobile carrier Example: T-Mobile
            - `countryCode` string, required — The country code (leading `+` is optional) Example: 42 Pattern: ^\+?[0-9]+$
            - `phone` string, required — The phone number without the country code or hyphens Example: 2025550169 Pattern: ^[0-9]+$
          - `shippingAddress` CartItemAddress — Address structure
            - `country` string — Country code specified as a two letter code according to ISO 3166 Alpha-2 Between 2 and 2 characters Example: US Pattern: ^[A-Z]{2}$
            - `state` string — The state or province Example: PA
            - `city` string — The city or locality Example: Pittsburgh
            - `street` string — The street name Example: Baker St
            - `postalCode` string — The address postal code
          - `wallet` RecipientInfoWallet — The crypto wallet that will receive the funds
            - `custodialType` 'custodial' | 'nonCustodial' | 'unknown', required — The type of the wallet Allowed values: custodial, nonCustodial, unknown Example: custodial
            - `blockchain` string, required — The blockchain on which the transaction was made Example: BTC Pattern: ^[A-Z0-9-]+$
            - `address` string, required — The crypto wallet address that will receive the funds
        - `pnr` string, required — The flight ticket's PNR code Example: X36Q9C
        - `trip` TravelTrip, required — The trip details of the travel booking
          - `numberOfFlights` number, double, required — The number of flights in the trip Min value: 1 Example: 2
          - `numberOfCheckedBags` number, double, required — The number of checked bags Min value: 0 Example: 1
          - `firstWayDestination` string, required — The first-way destination's three-letter IATA airport code Example: JFK Pattern: ^[A-Z]{3}$
          - `isRoundTrip` boolean, required — `true` if the trip is a round-trip Example: true
          - `highestClass` 'economy' | 'luxurious', required — `luxurious` if the highest bought travel class in the trip is a luxury class (business/first), `economy` otherwise Example: luxurious
          - `isFlexibleTicket` boolean, required — True if the trip ticket is a flexible ticket Example: true
          - `wereExtrasPurchased` boolean, required — True if extras were included in the trip purchase Example: true
        - `firstFlight` TravelFirstFlight, required — The first flight details of the trip
          - `numberOfTravelers` number, double, required — The number of travelers in the first flight Min value: 1 Example: 2
          - `departureTime` number, double, required — The timestamp of the departure, in *milliseconds* since the unix epoch Example: 1551398400000
          - `departureAirport` string, required — The first-flight departure airport's three-letter IATA code Example: JFK Pattern: ^[A-Z]{3}$
          - `duration` number, double, required — The first-flight duration, in hours Min value: 0 Example: 3.5
          - `flightNumber` string, required — The alphanumeric flight code Example: BA2491A Pattern: ^[A-Z0-9]+$
      - FlightUpgradeCartItem — Represents a flight upgrade item in a shopping cart
        - `itemClass` 'flightUpgrade', required — Denotes the cart item class. The item schema is chosen based on this value. Allowed value: flightUpgrade Example: flightUpgrade
        - `id` string — The cart items's unique ID Example: 5de33332-546a-4171-8988-2a43d2bfe9c6
        - `rawProductData` AnyObject
          - `example` string
        - `sellingPrice` CurrencyAmount, required — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `listPrice` CurrencyAmount — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `recipientInfo` RecipientInfo
          - `accountId` string — The ID of the account that will receive the purchased goods
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `gender` string — Gender Example: female
          - `lastName` string — Last name Example: Lois
          - `message` string — The message that the recipient will receive
          - `phoneInfo` PhoneInfo — Phone information structure
            - `carrier` string — The mobile carrier Example: T-Mobile
            - `countryCode` string, required — The country code (leading `+` is optional) Example: 42 Pattern: ^\+?[0-9]+$
            - `phone` string, required — The phone number without the country code or hyphens Example: 2025550169 Pattern: ^[0-9]+$
          - `shippingAddress` CartItemAddress — Address structure
            - `country` string — Country code specified as a two letter code according to ISO 3166 Alpha-2 Between 2 and 2 characters Example: US Pattern: ^[A-Z]{2}$
            - `state` string — The state or province Example: PA
            - `city` string — The city or locality Example: Pittsburgh
            - `street` string — The street name Example: Baker St
            - `postalCode` string — The address postal code
          - `wallet` RecipientInfoWallet — The crypto wallet that will receive the funds
            - `custodialType` 'custodial' | 'nonCustodial' | 'unknown', required — The type of the wallet Allowed values: custodial, nonCustodial, unknown Example: custodial
            - `blockchain` string, required — The blockchain on which the transaction was made Example: BTC Pattern: ^[A-Z0-9-]+$
            - `address` string, required — The crypto wallet address that will receive the funds
        - `pnr` string — The flight ticket's PNR code Example: X36Q9C
        - `upgradeType` 'changes' | 'fareIncrease' | 'baggage' | 'seats' | 'insurance' | 'other', required — The type of upgrade Example: changes
        - `description` string — The upgrade description, required when the upgrade type is `other`
      - LodgingCartItem — Represents a lodging reservation item in a shopping cart. The reservation fields are flattened at the top level of the item.
        - `reservationId` string, required — Hotel reservation id Example: X36Q9C
        - `nights` number, double, required — The number of nights booked in the reservation Min value: 1 Example: 2
        - `checkInDate` string, required — The check-in date Example: 2022-05-02
        - `checkInHour` string, required — The hour of day in which the check-in is done Example: 18 Pattern: ^([01][0-9]|2[0-3])$
        - `hotel` TravelLodgingHotel, required — The booked hotel details
          - `name` string, required — The name of the hotel Example: The Plaza Hotel
          - `country` string, required — The two-letter code of the country in which the hotel is located Example: US Pattern: ^[A-Z]{2}$
          - `city` string, required — The city in which the hotel is located Example: New York
        - `wereExtrasPurchased` boolean, required — Indicates whether extras were purchased in the reservation
        - `isRefundable` boolean, required — Indicates whether the reservation is refundable
        - `highestRoomType` string, required — The most luxurious room booked in the reservation Example: Presidential Suite
        - `numberOfRooms` number, double, required — The number of rooms booked in the reservation Min value: 1 Example: 2
        - `numberOfGuests` number, double, required — The number of guests in the reservation Min value: 1 Example: 4
        - `numberOfKids` number, double, required — The number of kids, out of the number of guests in the reservation Min value: 0 Example: 2
        - `itemClass` 'lodging', required — Denotes the cart item class. The item schema is chosen based on this value. Allowed value: lodging Example: lodging
        - `id` string — The cart items's unique ID Example: 5de33332-546a-4171-8988-2a43d2bfe9c6
        - `rawProductData` AnyObject
          - `example` string
        - `sellingPrice` CurrencyAmount, required — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `listPrice` CurrencyAmount — Common currency amount structure
          - `valueInCurrency` number, double, required — The amount in the currency, which is specified in the `currency` property Example: 90
          - `currency` string, required — Currency specified as a three letter code according to ISO 4217 Example: USD
        - `recipientInfo` RecipientInfo
          - `accountId` string — The ID of the account that will receive the purchased goods
          - `dob` string — Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$
          - `email` string, nullable — Email Example: lois.lane@dailyplanet.com
          - `firstName` string — First name Example: Lois
          - `gender` string — Gender Example: female
          - `lastName` string — Last name Example: Lois
          - `message` string — The message that the recipient will receive
          - `phoneInfo` PhoneInfo — Phone information structure
            - `carrier` string — The mobile carrier Example: T-Mobile
            - `countryCode` string, required — The country code (leading `+` is optional) Example: 42 Pattern: ^\+?[0-9]+$
            - `phone` string, required — The phone number without the country code or hyphens Example: 2025550169 Pattern: ^[0-9]+$
          - `shippingAddress` CartItemAddress — Address structure
            - `country` string — Country code specified as a two letter code according to ISO 3166 Alpha-2 Between 2 and 2 characters Example: US Pattern: ^[A-Z]{2}$
            - `state` string — The state or province Example: PA
            - `city` string — The city or locality Example: Pittsburgh
            - `street` string — The street name Example: Baker St
            - `postalCode` string — The address postal code
          - `wallet` RecipientInfoWallet — The crypto wallet that will receive the funds
            - `custodialType` 'custodial' | 'nonCustodial' | 'unknown', required — The type of the wallet Allowed values: custodial, nonCustodial, unknown Example: custodial
            - `blockchain` string, required — The blockchain on which the transaction was made Example: BTC Pattern: ^[A-Z0-9-]+$
            - `address` string, required — The crypto wallet address that will receive the funds
  - `customerInfo` union
    - SplitNameCustomerInfo
      - `verificationId` string
      - `displayName` string
      - `address` string
      - `city` string
      - `state` string
      - `zip` string
      - `country` string
      - `ip` string
      - `lat` string
      - `lng` string
      - `dob` string — Date of birth in YYYY-MM-DD format
      - `email` string
      - `firstName` string, required
      - `lastName` string, required
    - NameCustomerInfo
      - `verificationId` string
      - `displayName` string
      - `address` string
      - `city` string
      - `state` string
      - `zip` string
      - `country` string
      - `ip` string
      - `lat` string
      - `lng` string
      - `dob` string — Date of birth in YYYY-MM-DD format
      - `email` string
      - `name` string
  - `settlementType` 'Credits' | 'USDC'
  - `rent` SavedVenmoCheckoutArgsRent — (Solana only) if your transaction requires a known amount of Rent to be paid, you can pass it here.
    - `lamports` union, required
      - string
      - number, double
  - `redemptionCheck` boolean — (Solana only) If a transaction involved in the purchase, should payment be checked for redemption
  - `transactionData` union — (EVM only) if you want to execute an EVM transaction on a successful purchase, you can pass a transaction request here. Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.
    - SafeMintRedeem — (EVM only) If your contract mints an NFT via a OpenZeppelin Safe Mint Call, then utilize this object. The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the SafeMint event, and fwd's the NFT to the end user's wallet.
      - `waitForHash` boolean — Whether the UI should wait for the transaction to be sent and the hash to be returned.
      - `transaction` SafeMintRedeemTransaction, required — Transaction to be called.
        - `data` string, required — The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.
        - `to` string, required — The merchant's whitelisted contract
      - `type` 'safeMint', required
      - `nftContract` string
    - ReturnedTokenIdRedeem — (EVM only) If your contract returns the NFT ID, then utilize this object. The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the returned NFT ID, and fwd's the NFT to the end user's wallet.
      - `waitForHash` boolean — Whether the UI should wait for the transaction to be sent and the hash to be returned.
      - `transaction` ReturnedTokenIdRedeemTransaction, required — Transaction to be called.
        - `data` string, required — The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.
        - `to` string, required — The merchant's whitelisted contract
      - `type` 'returned', required
      - `nftContract` string
    - KnownTokenIdRedeem — (EVM only) If your know the ID of the NFT being purchased, then utilize this object. The contract transfers the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract fwd's the NFT to the end user's wallet.
      - `waitForHash` boolean — Whether the UI should wait for the transaction to be sent and the hash to be returned.
      - `transaction` KnownTokenIdRedeemTransaction, required — Transaction to be called.
        - `data` string, required — The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.
        - `to` string, required — The merchant's whitelisted contract
      - `nftContract` string, required — The address of the Nft's Contract
      - `nftId` string, required — The ID of the NFT being purchased. Will be forwarded by the Coinflow contract to the customer's wallet.
    - NormalRedeem — (EVM only) If your contract sends the item/service being purchased via a custom "receiver" field, then utilize this object. The coinflow contract calls the "to" contract, which transfers the NFT/item to the "receiver" address defined in the contract function arguments.
      - `waitForHash` boolean — Whether the UI should wait for the transaction to be sent and the hash to be returned.
      - `transaction` NormalRedeemTransaction, required — Transaction to be called.
        - `data` string, required — The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.
        - `to` string, required — The merchant's whitelisted contract
    - TokenRedeem
      - `waitForHash` boolean — Whether the UI should wait for the transaction to be sent and the hash to be returned.
      - `type` 'token', required
      - `destination` string, required
    - DecentRedeem — If your contract exists on a chain supported by Decent, pass this object in order to call it.
      - `waitForHash` boolean — Whether the UI should wait for the transaction to be sent and the hash to be returned.
      - `type` 'decent', required
      - `dstChainId` number, double, required — ID of the destination chain you will be using Find your chain ID here: https://chainlist.org/
      - `dstToken` string, required — Address on that chain of the token you will be receiving
      - `contractAddress` string, required — The contract address which will be called on the destination chain
      - `contractData` string, required
      - `cost` DecentRedeemCost, required — Amount of the token on the destination chain you will be receiving
        - `isNative` boolean, required — Whether or not the token is the native token for the chain (ex: Ethereum - ETH, Polygon - POL). If native dstToken should be the 0 address (0x00...)
        - `amount` string, required — This is the raw amount of the token ex: 50000000000000n
  - `authOnly` boolean — Only authorize the purchase. This will not actually capture the payment.(default: false)
  - `feePercentage` number, double — If this purchase is for a seller/submerchant where the marketplace takes a fee, this is the % fee which is taken from the subtotal amount.
  - `fixedFee` Cents
    - `cents` integer, required
  - `jwtToken` string — This is a token encoding the parameters for the request. Allows purchase parameters to be verified to prevent manipulation when the checkout page is presented to the user.
  - `threeDsChallengePreference` 'NoPreference' | 'Frictionless' | 'Challenge'
  - `destinationAuthKey` string — If utilizing USDC settlement to addresses other than your main merchant settlement address. Utilize this destinationAuthKey which is a JWT encoded with the information for which address to send the USDC to.
  - `customerUsdcTransferData` CustomerUsdcTransferData — Customer signed USDC transferWithAuthorization data for dual-source payments Used for combined USDC + Credit Card payments on EVM chains
    - `from` string, required
    - `to` string, required
    - `value` string, required
    - `validAfter` union, required
      - string
      - number, double
    - `validBefore` union, required
      - string
      - number, double
    - `nonce` string, required
    - `v` number, double, required
    - `r` string, required
    - `s` string, required
  - `customerUsdcTransferDataV2` CustomerUsdcTransferDataV2 — V2 of CustomerUsdcTransferData — replaces the (v, r, s) triple with a single `signature` bytes string, matching USDC FiatTokenV2_2's bytes-overload `transferWithAuthorization`. All other fields unchanged from V1.
    - `from` string, required
    - `to` string, required
    - `value` string, required
    - `validAfter` union, required
      - string
      - number, double
    - `validBefore` union, required
      - string
      - number, double
    - `nonce` string, required
    - `signature` string, required
  - `stellarTransaction` string — (Stellar only) Base64 XDR transaction string for executing a merchant contract call on a successful purchase. For transaction purchases, pass the base64 XDR string created using `.toXDR()` on a transaction built with generated TypeScript bindings (e.g., `NftClientWrapper.buildNftPurchaseTx`). For direct USDC transfers (no merchant transaction), omit this field or pass undefined. Gas fees for the transaction will be automatically calculated and added to the total charged to the customer.
  - `userLocation` IUserLocation — End-user geographic coordinates captured at the moment of the withdrawal request. Consumed by `BlockingRuleMethod.GEOLOCATION` enforcement. Replay-of-different-coords bypass is prevented server-side: the first resolved {country, state} for a given (merchant, user) pair is pinned in Redis, and subsequent requests are evaluated against that pinned value regardless of the lat/lng they submit.
    - `lat` number, double, required
    - `lng` number, double, required
  - `customPayInFees` CustomPayInFeeConfig[]
    - `fee` union, required
      - CustomPayInFeeValue0
        - `cents` number, double, required
        - `currency` 'USD' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'GBP' | 'GEL' | 'GHS' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MWK' | 'MVR' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RWF' | 'SAR' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SLE' | 'SLL' | 'SOS' | 'SRD' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL' | 'CDF' | 'ERN' | 'FKP' | 'KPW' | 'RUB' | 'SBD' | 'SHP' | 'SSP' | 'VES', required
        - `percent` number, double, nullable, required
        - `isFixed` boolean, required
      - CustomPayInFeeValue1
        - `cents` number, double, nullable, required
        - `currency` number, double, nullable, required
        - `percent` number, double, required
        - `isFixed` boolean, required
    - `lineItemLabel` string, required
  - `overrideChargebackProtectionDecision` boolean
  - `doNotReviewChargebackProtection` boolean
  - `presentment` 'USD' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'GBP' | 'GEL' | 'GHS' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MWK' | 'MVR' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RWF' | 'SAR' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SLE' | 'SLL' | 'SOS' | 'SRD' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL' | 'CDF' | 'ERN' | 'FKP' | 'KPW' | 'RUB' | 'SBD' | 'SHP' | 'SSP' | 'VES'
  - `returnUrl` string — The URL to redirect the customer to after they approve the payment. If provided, cancelUrl must also be provided.
  - `cancelUrl` string — The URL to redirect the customer to if they cancel the payment. If provided, returnUrl must also be provided.
  - `simulateAuthorizationFailure` boolean — Sandbox Only. Will force the authorization of the payment to fail.
  - `simulateCaptureFailure` boolean — Sandbox Only. Will force the capture of the payment to fail.
  - `simulateRefundFailure` boolean — Sandbox Only. Will force the refund of the payment to fail.
  - `token` string, required — The saved token of the Venmo account

## Response `200`

Ok

- VenmoCheckoutResponse
  - `paymentId` string, required — The ID of the payment that was created.
  - `approvalLink` string — PayPal payer-action link for approving the order via redirect (used by mobile flows where the SDK session cannot run, e.g. in-app browsers). Only present when returnUrl/cancelUrl were provided.

## Other responses

- `412` — Challenge required
- `423` — Customer is Blocked
- `451` — Must Complete Additional Verification

---

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