> Note: > Sales channel apps require elevated permissions to complete credit card payments through the Shopify API. Refer to [Request payment processing](/docs/apps/build/sales-channels/start-building#step-3-request-payment-processing) to learn how to be approved by Shopify. Sales channel apps use the REST Admin API's [`Checkout`](/docs/api/admin-rest/latest/resources/checkout) resource to send your customers' credit card information to Shopify and complete their payments. You can complete the checkout using the one of the following methods: - [Shopify web checkout](#shopify-web-checkout) - [Third-party tokenization service (Stripe, Spreedly)](#third-party-tokenization-service-stripe-spreedly) - [Shopify card vault](#shopify-card-vault) ## Shopify web checkout By default, your app can provide checkout links to Shopify's web checkout for each product. This lets your platform use Shopify's web checkout instead of building your own native checkout form. You can direct customers to a checkout link by using the `web_url` parameter of the [Checkout](/docs/api/admin-rest/latest/resources/checkout) resource. ## Third-party tokenization service (Stripe, Spreedly) If you want to accept payments directly in your app instead, then it's recommended that you use a third-party service to tokenize your customers' credit card information and send it to Shopify. By tokenizing this information, you reduce the [PCI compliance](https://www.shopify.com/security) scope for payments using your sales channel app. The tokenization service that you integrate with your app determines the type of payment gateway that Shopify merchants can use with your sales channel: - [Integrate with Stripe](#integration-with-stripe) to process payments for merchants who have Shopify Payments activated as their payment gateway. - [Integrate with Spreedly](#integration-with-spreedly) (or a similar forwarding service) to process payments for merchants who are using a payment gateway other than Shopify Payments. ### Integration with Stripe The following diagram illustrates the process for completing a checkout with Stripe: ![A diagram of the process for completing a payment with Stripe](/assets/api/sdks/sales-channel-sdk/stripe-vault.png) 1. Customer initiates checkout. 1. Your sales channel app uses the Checkout API to create a checkout. 1. Shopify returns the `shopify_payments_account_id`. 1. Your channel sends the merchant's managed account ID and the customer's credit card information to Stripe to generate a token. 1. Your channel uses the Checkout API to create a payment transaction, and it passes the token from Stripe to Shopify. 1. Shopify processes the payment using Shopify Payments. Learn how to [complete a checkout with the Stripe](/docs/apps/build/sales-channels/checkout-api/complete-stripe). ### Integration with Spreedly The following diagram illustrates the process for completing a checkout with Spreedly: ![A diagram of the process for completing a payment with Spreedly](/assets/api/sdks/sales-channel-sdk/spreedly-vault.png) 1. The customer starts the checkout process. 1. Your sales channel app uses the Checkout API to create a checkout object in Shopify. 1. Shopify returns the checkout information to your sales channel app. 1. Your sales channel app passes the credit card information to Spreedly. 1. Spreedly generates a vaulted credit card token. 1. Spreedly passes the credit card information to Shopify’s vault. 1. The Shopify vault passes a payment session ID to Spreedly. 1. Spreedly sends the vaulted credit card token and the payment session ID to your sales channel app. 1. Your sales channel app then sends the payment session to Shopify and creates an order using the Checkout API. 1. Shopify processes the payment using the merchant's payment gateway. Learn how to [complete a checkout with the Spreedly](/docs/apps/build/sales-channels/checkout-api/complete-spreedly). ## Shopify card vault > Tip: > If you send the card information to Shopify directly from your sales channel app (without using a tokenization service), then you will have a higher [PCI compliance](https://www.pcisecuritystandards.org/) scope. You can reduce your PCI scope by using a third-party service, like Stripe or Spreedly, to send the card information. The following diagram illustrates the process for completing a checkout for your sales channel app: ![A diagram of the process for completing a payment from your sales channel app](/assets/api/sdks/sales-channel-sdk/shopify-vault.png) 1. The customer starts the checkout process. 1. Your sales channel app uses the Checkout API to create a checkout object in Shopify. 1. Shopify returns the checkout information to your sales channel app. 1. Your sales channel app passes the credit card information to Shopify's PCI-compliant card server. 1. Shopify's card server returns a payment session ID to your sales channel app. 1. Your sales channel app uses the Checkout API to pass the payment session ID to Shopify. 1. Shopify processes the payment using the merchant's payment gateway. ## Next steps - [Complete a checkout with Stripe](/docs/apps/build/sales-channels/checkout-api/complete-stripe) - [Complete a checkout with Spreedly](/docs/apps/build/sales-channels/checkout-api/complete-spreedly)