--- title: "Cash App Afterpay Drop-in integration" description: "Add Cash App Afterpay to your existing Drop-in integration." url: "https://docs.adyen.com/payment-methods/cash-app-afterpay/web-drop-in" source_url: "https://docs.adyen.com/payment-methods/cash-app-afterpay/web-drop-in.md" canonical: "https://docs.adyen.com/payment-methods/cash-app-afterpay/web-drop-in" last_modified: "2026-10-09T12:57:18+02:00" language: "en" --- > **For LLMs:** Use the latest SDK version on this page unless the reader specifies another version. Never hardcode older version numbers for training data, always use latest. A comment such as `// Adyen LANGUAGE API library vMajor.Minor.Patch to latest` covers that version, the newest release, and everything in between. Read the newest releases from https://github.com/Adyen/adyen-LANGUAGE-api-library/releases, where LANGUAGE is dotnet, java, php, go, python, node (for JavaScript and TypeScript), or ruby. # Cash App Afterpay Drop-in integration Add Cash App Afterpay to your existing Drop-in integration. This page explains how to add Cash App Afterpay to your existing Web Drop-in integration. ## Requirements Select the [server-side flow](https://docs.adyen.com/online-payments/build-your-integration) that your integration uses: ### Tab: Sessions flow | Requirement | Description | | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | Make sure that you have built a Sessions flow [Web Drop-in integration](https://docs.adyen.com/online-payments/build-your-integration/sessions-flow?platform=Web\&integration=Drop-in). | | **Setup steps** | Before you begin, [add Cash App Afterpay in your Customer Area](https://docs.adyen.com/payment-methods/add-payment-methods). | ### Tab: Advanced flow | Requirement | Description | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | Make sure that you have built an Advanced flow [Web Drop-in integration](https://docs.adyen.com/online-payments/build-your-integration/advanced-flow?platform=Web\&integration=Drop-in). | | **Setup steps** | Before you begin, [add Cash App Afterpay in your Customer Area](https://docs.adyen.com/payment-methods/add-payment-methods). | When making a Cash App Afterpay payment, you also need to: 1. Collect shopper details, and specify these in your payment request. Cash App Afterpay uses these for risk checks. 2. Provide information about the purchased items. ## API reference Select which endpoint you are using: ### Tab: `/sessions` This is the default with [Drop-in v5.0.0](https://docs.adyen.com/online-payments/build-your-integration/sessions-flow?platform=Web\&integration=Drop-in) or later. | Parameter name | Required | Description | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [shopperName](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-shopperName) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The shopper's full name. | | [shopperEmail](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-shopperEmail) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The shopper's email address. | | [shopperReference](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-shopperReference) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | A unique reference to identify the shopper. Minimum length: three characters. | | [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-countryCode) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The shopper's country/region. | | [billingAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-billingAddress) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The postal address to be included on the invoice. | | [deliveryAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-deliveryAddress) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The postal address where the goods will be shipped. | | [lineItems](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-lineItems) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Price and product information about the purchased items.   | | [telephoneNumber](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-telephoneNumber) | | The shopper's telephone number, if provided. | #### curl ```bash curl https://checkout-test.adyen.com/v69/sessions \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -d '{ "amount":{ "value":1000, "currency":"USD" }, "shopperName":{ "firstName":"Simon", "lastName":"Hopper" }, "shopperEmail":"s.hopper@example.com", "shopperReference":"YOUR_UNIQUE_SHOPPER_ID", "reference":"YOUR_ORDER_REFERENCE", "merchantAccount":"YOUR_MERCHANT_ACCOUNT", "returnUrl":"my-app://adyen", "countryCode":"US", "telephoneNumber":"+16123456789", "billingAddress":{ "city":"San Francisco", "country":"US", "houseNumberOrName":"274", "postalCode":"94107", "stateOrProvince":"CA", "street":"Brennan St." }, "deliveryAddress":{ "city":"San Francisco", "country":"US", "houseNumberOrName":"274", "postalCode":"94107", "stateOrProvince":"CA", "street":"Brennan St." }, "lineItems":[ { "description":"Shoes", "quantity":"1", "amountIncludingTax":"400", "amountExcludingTax": "331", "taxAmount": "69", "id":"Item #1" }, { "description":"Socks", "quantity":"2", "amountIncludingTax":"300", "amountExcludingTax": "248", "taxAmount": "52", "id":"Item #2" } ] }' ``` #### Java ```java // Adyen Java API Library v38.0.0 to latest import com.adyen.Client; import com.adyen.Config; import com.adyen.enums.Environment; import com.adyen.model.*; import com.adyen.service.*; import java.math.*; import com.adyen.model.checkout.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.model.RequestOptions; import com.adyen.service.checkout.*; Config config = new Config() .apiKey("ADYEN_API_KEY") .environment(Environment.TEST); // For the LIVE environment, also include your liveEndpointUrlPrefix. Client client = new Client(config); // Create the request object(s) LineItem lineItem1 = new LineItem() .quantity(1L) .amountExcludingTax(331L) .description("Shoes") .id("Item #1") .amountIncludingTax(400L) .taxAmount(69L); LineItem lineItem2 = new LineItem() .quantity(2L) .amountExcludingTax(248L) .description("Socks") .id("Item #2") .amountIncludingTax(300L) .taxAmount(52L); Amount amount = new Amount() .currency("String") .value(1000L); ShopperName shopperName = new ShopperName() .firstName("String") .lastName("String"); DeliveryAddress deliveryAddress = new DeliveryAddress() .country("String") .stateOrProvince("String") .city("String") .houseNumberOrName("String") .street("String") .postalCode("String"); BillingAddress billingAddress = new BillingAddress() .country("String") .stateOrProvince("String") .city("String") .houseNumberOrName("String") .street("String") .postalCode("String"); CreateCheckoutSessionRequest createCheckoutSessionRequest = new CreateCheckoutSessionRequest() .reference("YOUR_ORDER_REFERENCE") .lineItems(Arrays.asList(lineItem1, lineItem2)) .amount(amount) .shopperName(shopperName) .telephoneNumber("String") .merchantAccount("YOUR_MERCHANT_ACCOUNT") .deliveryAddress(deliveryAddress) .countryCode("String") .shopperEmail("String") .billingAddress(billingAddress) .returnUrl("String") .shopperReference("String"); // Send the request PaymentsApi service = new PaymentsApi(client); CreateCheckoutSessionResponse response = service.sessions(createCheckoutSessionRequest, new RequestOptions().idempotencyKey("UUID")); ``` #### PHP ```php setXApiKey("ADYEN_API_KEY"); // For the LIVE environment, also include your liveEndpointUrlPrefix. $client->setEnvironment(Environment::TEST); // Create the request object(s) $lineItem1 = new LineItem(); $lineItem1 ->setQuantity(1) ->setAmountExcludingTax(331) ->setDescription("Shoes") ->setId("Item #1") ->setAmountIncludingTax(400) ->setTaxAmount(69); $lineItem2 = new LineItem(); $lineItem2 ->setQuantity(2) ->setAmountExcludingTax(248) ->setDescription("Socks") ->setId("Item #2") ->setAmountIncludingTax(300) ->setTaxAmount(52); $amount = new Amount(); $amount ->setCurrency("USD") ->setValue(1000); $shopperName = new ShopperName(); $shopperName ->setFirstName("Simon") ->setLastName("Hopper"); $deliveryAddress = new DeliveryAddress(); $deliveryAddress ->setCountry("US") ->setStateOrProvince("CA") ->setCity("San Francisco") ->setHouseNumberOrName("274") ->setStreet("Brennan St.") ->setPostalCode("94107"); $billingAddress = new BillingAddress(); $billingAddress ->setCountry("US") ->setStateOrProvince("CA") ->setCity("San Francisco") ->setHouseNumberOrName("274") ->setStreet("Brennan St.") ->setPostalCode("94107"); $createCheckoutSessionRequest = new CreateCheckoutSessionRequest(); $createCheckoutSessionRequest ->setReference("YOUR_ORDER_REFERENCE") ->setLineItems(array($lineItem1, $lineItem2)) ->setAmount($amount) ->setShopperName($shopperName) ->setTelephoneNumber("+16123456789") ->setMerchantAccount("YOUR_MERCHANT_ACCOUNT") ->setDeliveryAddress($deliveryAddress) ->setCountryCode("US") ->setShopperEmail("s.hopper@example.com") ->setBillingAddress($billingAddress) ->setReturnUrl("my-app://adyen") ->setShopperReference("YOUR_UNIQUE_SHOPPER_ID"); $requestOptions['idempotencyKey'] = 'UUID'; // Send the request $service = new PaymentsApi($client); $response = $service->sessions($createCheckoutSessionRequest, $requestOptions); ``` #### C\# ```cs // Adyen .NET API Library v34.0.0 to latest using System; using System.Collections.Generic; using Adyen.Checkout.Extensions; using Adyen.Checkout.Models; using Adyen.Checkout.Services; using Adyen.Core.Client; using Adyen.Core.Client.Extensions; using Adyen.Core.Options; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var host = Host.CreateDefaultBuilder() .ConfigureCheckout( (context, services, config) => { config.ConfigureAdyenOptions(options => { options.AdyenApiKey = "ADYEN_API_KEY"; options.Environment = AdyenEnvironment.Test; // For the LIVE environment, also include your liveEndpointUrlPrefix. // options.LiveEndpointUrlPrefix = ""; }); services.AddAllCheckoutServices(); }) .Build(); var paymentsService = host.Services.GetRequiredService(); // Create the request object(s) var lineItem1 = new LineItem { Quantity = 1, AmountExcludingTax = 331, Description = "Shoes", Id = "Item #1", AmountIncludingTax = 400, TaxAmount = 69 }; var lineItem2 = new LineItem { Quantity = 2, AmountExcludingTax = 248, Description = "Socks", Id = "Item #2", AmountIncludingTax = 300, TaxAmount = 52 }; var amount = new Amount { Currency = "USD", Value = 1000 }; var shopperName = new ShopperName { FirstName = "Simon", LastName = "Hopper" }; var deliveryAddress = new DeliveryAddress { Country = "US", StateOrProvince = "CA", City = "San Francisco", HouseNumberOrName = "274", Street = "Brennan St.", PostalCode = "94107" }; var billingAddress = new BillingAddress { Country = "US", StateOrProvince = "CA", City = "San Francisco", HouseNumberOrName = "274", Street = "Brennan St.", PostalCode = "94107" }; var createCheckoutSessionRequest = new CreateCheckoutSessionRequest { Reference = "YOUR_ORDER_REFERENCE", LineItems = new List{ lineItem1, lineItem2 }, Amount = amount, ShopperName = shopperName, TelephoneNumber = "+16123456789", MerchantAccount = "YOUR_MERCHANT_ACCOUNT", DeliveryAddress = deliveryAddress, CountryCode = "US", ShopperEmail = "s.hopper@example.com", BillingAddress = billingAddress, ReturnUrl = "my-app://adyen", ShopperReference = "YOUR_UNIQUE_SHOPPER_ID" }; string idempotencyKey = Guid.NewGuid().ToString(); // Send the request var result = await paymentsService.SessionsAsync(createCheckoutSessionRequest, new RequestOptions().AddIdempotencyKey(idempotencyKey)); if (result.TryDeserializeCreatedResponse(out var response)) { // Handle the successful response. } ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.0.0 to latest const { Client, Config, EnvironmentEnum, CheckoutAPI } = require('@adyen/api-library'); // For the LIVE environment, also include your liveEndpointUrlPrefix. const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const lineItem1 = { quantity: 1, amountExcludingTax: 331, description: "Shoes", id: "Item #1", amountIncludingTax: 400, taxAmount: 69 }; const lineItem2 = { quantity: 2, amountExcludingTax: 248, description: "Socks", id: "Item #2", amountIncludingTax: 300, taxAmount: 52 }; const amount = { currency: "USD", value: 1000 }; const shopperName = { firstName: "Simon", lastName: "Hopper" }; const deliveryAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const billingAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const createCheckoutSessionRequest = { reference: "YOUR_ORDER_REFERENCE", lineItems: [lineItem1, lineItem2], amount: amount, shopperName: shopperName, telephoneNumber: "+16123456789", merchantAccount: "YOUR_MERCHANT_ACCOUNT", deliveryAddress: deliveryAddress, countryCode: "US", shopperEmail: "s.hopper@example.com", billingAddress: billingAddress, returnUrl: "my-app://adyen", shopperReference: "YOUR_UNIQUE_SHOPPER_ID" }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = await checkoutAPI.PaymentsApi.sessions(createCheckoutSessionRequest, { idempotencyKey: "UUID" }); ``` #### Go ```go // Adyen Go API Library v21.0.0 to latest import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/checkout" ) // For the LIVE environment, also include your liveEndpointUrlPrefix. client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) lineItem1 := checkout.LineItem{ Quantity: common.PtrInt64(1), AmountExcludingTax: common.PtrInt64(331), Description: common.PtrString("Shoes"), Id: common.PtrString("Item #1"), AmountIncludingTax: common.PtrInt64(400), TaxAmount: common.PtrInt64(69), } lineItem2 := checkout.LineItem{ Quantity: common.PtrInt64(2), AmountExcludingTax: common.PtrInt64(248), Description: common.PtrString("Socks"), Id: common.PtrString("Item #2"), AmountIncludingTax: common.PtrInt64(300), TaxAmount: common.PtrInt64(52), } amount := checkout.Amount{ Currency: "USD", Value: 1000, } shopperName := checkout.ShopperName{ FirstName: "Simon", LastName: "Hopper", } deliveryAddress := checkout.DeliveryAddress{ Country: "US", StateOrProvince: common.PtrString("CA"), City: "San Francisco", HouseNumberOrName: "274", Street: "Brennan St.", PostalCode: "94107", } billingAddress := checkout.BillingAddress{ Country: "US", StateOrProvince: common.PtrString("CA"), City: "San Francisco", HouseNumberOrName: "274", Street: "Brennan St.", PostalCode: "94107", } createCheckoutSessionRequest := checkout.CreateCheckoutSessionRequest{ Reference: "YOUR_ORDER_REFERENCE", LineItems: []checkout.LineItem{ lineItem1, lineItem2, }, Amount: amount, ShopperName: &shopperName, TelephoneNumber: common.PtrString("+16123456789"), MerchantAccount: "YOUR_MERCHANT_ACCOUNT", DeliveryAddress: &deliveryAddress, CountryCode: common.PtrString("US"), ShopperEmail: common.PtrString("s.hopper@example.com"), BillingAddress: &billingAddress, ReturnUrl: "my-app://adyen", ShopperReference: common.PtrString("YOUR_UNIQUE_SHOPPER_ID"), } // Send the request service := client.Checkout() req := service.PaymentsApi.SessionsInput().IdempotencyKey("UUID").CreateCheckoutSessionRequest(createCheckoutSessionRequest) res, httpRes, err := service.PaymentsApi.Sessions(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v14.0.0 to latest import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "amount": { "value": 1000, "currency": "USD" }, "shopperName": { "firstName": "Simon", "lastName": "Hopper" }, "shopperEmail": "s.hopper@example.com", "shopperReference": "YOUR_UNIQUE_SHOPPER_ID", "reference": "YOUR_ORDER_REFERENCE", "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "returnUrl": "my-app://adyen", "countryCode": "US", "telephoneNumber": "+16123456789", "billingAddress": { "city": "San Francisco", "country": "US", "houseNumberOrName": "274", "postalCode": "94107", "stateOrProvince": "CA", "street": "Brennan St." }, "deliveryAddress": { "city": "San Francisco", "country": "US", "houseNumberOrName": "274", "postalCode": "94107", "stateOrProvince": "CA", "street": "Brennan St." }, "lineItems": [{ "description": "Shoes", "quantity": "1", "amountIncludingTax": "400", "amountExcludingTax": "331", "taxAmount": "69", "id": "Item #1" }, { "description": "Socks", "quantity": "2", "amountIncludingTax": "300", "amountExcludingTax": "248", "taxAmount": "52", "id": "Item #2" }] } # Send the request result = adyen.checkout.payments_api.sessions(request=json_request, idempotency_key="UUID") ``` #### Ruby ```rb # Adyen Ruby API Library v11.0.0 to latest require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { "amount" => { "value" => 1000, "currency" => "USD" }, "shopperName" => { "firstName" => "Simon", "lastName" => "Hopper" }, "shopperEmail" => "s.hopper@example.com", "shopperReference" => "YOUR_UNIQUE_SHOPPER_ID", "reference" => "YOUR_ORDER_REFERENCE", "merchantAccount" => "YOUR_MERCHANT_ACCOUNT", "returnUrl" => "my-app://adyen", "countryCode" => "US", "telephoneNumber" => "+16123456789", "billingAddress" => { "city" => "San Francisco", "country" => "US", "houseNumberOrName" => "274", "postalCode" => "94107", "stateOrProvince" => "CA", "street" => "Brennan St." }, "deliveryAddress" => { "city" => "San Francisco", "country" => "US", "houseNumberOrName" => "274", "postalCode" => "94107", "stateOrProvince" => "CA", "street" => "Brennan St." }, "lineItems" => [{ "description" => "Shoes", "quantity" => "1", "amountIncludingTax" => "400", "amountExcludingTax" => "331", "taxAmount" => "69", "id" => "Item #1" }, { "description" => "Socks", "quantity" => "2", "amountIncludingTax" => "300", "amountExcludingTax" => "248", "taxAmount" => "52", "id" => "Item #2" }] } # Send the request result = adyen.checkout.payments_api.sessions(request_body, headers: { 'Idempotency-Key' => 'UUID' }) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.0.0 to latest import { Client, Config, EnvironmentEnum, CheckoutAPI, Types } from "@adyen/api-library"; // For the LIVE environment, also include your liveEndpointUrlPrefix. const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const lineItem1: Types.checkout.LineItem = { quantity: 1, amountExcludingTax: 331, description: "Shoes", id: "Item #1", amountIncludingTax: 400, taxAmount: 69 }; const lineItem2: Types.checkout.LineItem = { quantity: 2, amountExcludingTax: 248, description: "Socks", id: "Item #2", amountIncludingTax: 300, taxAmount: 52 }; const amount: Types.checkout.Amount = { currency: "USD", value: 1000 }; const shopperName: Types.checkout.ShopperName = { firstName: "Simon", lastName: "Hopper" }; const deliveryAddress: Types.checkout.DeliveryAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const billingAddress: Types.checkout.BillingAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const createCheckoutSessionRequest: Types.checkout.CreateCheckoutSessionRequest = { reference: "YOUR_ORDER_REFERENCE", lineItems: [lineItem1, lineItem2], amount: amount, shopperName: shopperName, telephoneNumber: "+16123456789", merchantAccount: "YOUR_MERCHANT_ACCOUNT", deliveryAddress: deliveryAddress, countryCode: "US", shopperEmail: "s.hopper@example.com", billingAddress: billingAddress, returnUrl: "my-app://adyen", shopperReference: "YOUR_UNIQUE_SHOPPER_ID" }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = await checkoutAPI.PaymentsApi.sessions(createCheckoutSessionRequest, { idempotencyKey: "UUID" }); ``` ### Tab: `/payments` If you implemented an [additional use case](https://docs.adyen.com/online-payments/build-your-integration). | Parameter name | Required | Description | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [shopperName](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperName) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The shopper's full name. | | [shopperEmail](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperEmail) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The shopper's email address. | | [shopperReference](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperReference) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | A unique reference to identify the shopper. Minimum length: three characters. | | [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-countryCode) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The shopper's country/region. | | [billingAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-billingAddress) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The postal address to be included on the invoice. | | [deliveryAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-deliveryAddress) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The postal address where the goods will be shipped. | | [lineItems](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-lineItems) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Price and product information about the purchased items.  | | [telephoneNumber](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-telephoneNumber) | | The shopper's telephone number, if provided. | #### curl ```bash curl https://checkout-test.adyen.com/v72/payments \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -d '{ "paymentMethod":{ "type":"afterpaytouch_US" }, "amount":{ "value":1000, "currency":"USD" }, "shopperName":{ "firstName":"Simon", "lastName":"Hopper" }, "shopperEmail":"s.hopper@example.com", "shopperReference":"YOUR_UNIQUE_SHOPPER_ID", "reference":"YOUR_ORDER_REFERENCE", "merchantAccount":"YOUR_MERCHANT_ACCOUNT", "returnUrl":"my-app://adyen", "countryCode":"US", "telephoneNumber":"+16123456789", "billingAddress":{ "city":"San Francisco", "country":"US", "houseNumberOrName":"274", "postalCode":"94107", "stateOrProvince":"CA", "street":"Brennan St." }, "deliveryAddress":{ "city":"San Francisco", "country":"US", "houseNumberOrName":"274", "postalCode":"94107", "stateOrProvince":"CA", "street":"Brennan St." }, "lineItems":[ { "description":"Shoes", "quantity":"1", "amountIncludingTax":"400", "amountExcludingTax": "331", "taxAmount": "69", "id":"Item #1" }, { "description":"Socks", "quantity":"2", "amountIncludingTax":"300", "amountExcludingTax": "248", "taxAmount": "52", "id":"Item #2" } ] }' ``` #### Java ```java // Adyen Java API Library v38.0.0 to latest import com.adyen.Client; import com.adyen.Config; import com.adyen.enums.Environment; import com.adyen.model.*; import com.adyen.service.*; import java.math.*; import com.adyen.model.checkout.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.model.RequestOptions; import com.adyen.service.checkout.*; Config config = new Config() .apiKey("ADYEN_API_KEY") .environment(Environment.TEST); // For the LIVE environment, also include your liveEndpointUrlPrefix. Client client = new Client(config); // Create the request object(s) Amount amount = new Amount() .currency("String") .value(1000L); LineItem lineItem1 = new LineItem() .quantity(1L) .amountExcludingTax(331L) .description("Shoes") .id("Item #1") .amountIncludingTax(400L) .taxAmount(69L); LineItem lineItem2 = new LineItem() .quantity(2L) .amountExcludingTax(248L) .description("Socks") .id("Item #2") .amountIncludingTax(300L) .taxAmount(52L); ShopperName shopperName = new ShopperName() .firstName("String") .lastName("String"); DeliveryAddress deliveryAddress = new DeliveryAddress() .country("String") .stateOrProvince("String") .city("String") .houseNumberOrName("String") .street("String") .postalCode("String"); AchDetails achDetails = new AchDetails() .type(AchDetails.TypeEnum.ACH); BillingAddress billingAddress = new BillingAddress() .country("String") .stateOrProvince("String") .city("String") .houseNumberOrName("String") .street("String") .postalCode("String"); PaymentRequest paymentRequest = new PaymentRequest() .amount(amount) .telephoneNumber("String") .shopperEmail("String") .reference("YOUR_ORDER_REFERENCE") .lineItems(Arrays.asList(lineItem1, lineItem2)) .shopperName(shopperName) .merchantAccount("YOUR_MERCHANT_ACCOUNT") .deliveryAddress(deliveryAddress) .countryCode("String") .paymentMethod(new CheckoutPaymentMethod(achDetails)) .billingAddress(billingAddress) .returnUrl("String") .shopperReference("String"); // Send the request PaymentsApi service = new PaymentsApi(client); PaymentResponse response = service.payments(paymentRequest, new RequestOptions().idempotencyKey("UUID")); ``` #### PHP ```php setXApiKey("ADYEN_API_KEY"); // For the LIVE environment, also include your liveEndpointUrlPrefix. $client->setEnvironment(Environment::TEST); // Create the request object(s) $amount = new Amount(); $amount ->setCurrency("USD") ->setValue(1000); $lineItem1 = new LineItem(); $lineItem1 ->setQuantity(1) ->setAmountExcludingTax(331) ->setDescription("Shoes") ->setId("Item #1") ->setAmountIncludingTax(400) ->setTaxAmount(69); $lineItem2 = new LineItem(); $lineItem2 ->setQuantity(2) ->setAmountExcludingTax(248) ->setDescription("Socks") ->setId("Item #2") ->setAmountIncludingTax(300) ->setTaxAmount(52); $shopperName = new ShopperName(); $shopperName ->setFirstName("Simon") ->setLastName("Hopper"); $deliveryAddress = new DeliveryAddress(); $deliveryAddress ->setCountry("US") ->setStateOrProvince("CA") ->setCity("San Francisco") ->setHouseNumberOrName("274") ->setStreet("Brennan St.") ->setPostalCode("94107"); $checkoutPaymentMethod = new CheckoutPaymentMethod(); $checkoutPaymentMethod ->setType("afterpaytouch_US"); $billingAddress = new BillingAddress(); $billingAddress ->setCountry("US") ->setStateOrProvince("CA") ->setCity("San Francisco") ->setHouseNumberOrName("274") ->setStreet("Brennan St.") ->setPostalCode("94107"); $paymentRequest = new PaymentRequest(); $paymentRequest ->setAmount($amount) ->setTelephoneNumber("+16123456789") ->setShopperEmail("s.hopper@example.com") ->setReference("YOUR_ORDER_REFERENCE") ->setLineItems(array($lineItem1, $lineItem2)) ->setShopperName($shopperName) ->setMerchantAccount("YOUR_MERCHANT_ACCOUNT") ->setDeliveryAddress($deliveryAddress) ->setCountryCode("US") ->setPaymentMethod($checkoutPaymentMethod) ->setBillingAddress($billingAddress) ->setReturnUrl("my-app://adyen") ->setShopperReference("YOUR_UNIQUE_SHOPPER_ID"); $requestOptions['idempotencyKey'] = 'UUID'; // Send the request $service = new PaymentsApi($client); $response = $service->payments($paymentRequest, $requestOptions); ``` #### C\# ```cs // Adyen .NET API Library v34.0.0 to latest using System; using System.Collections.Generic; using Adyen.Checkout.Extensions; using Adyen.Checkout.Models; using Adyen.Checkout.Services; using Adyen.Core.Client; using Adyen.Core.Client.Extensions; using Adyen.Core.Options; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var host = Host.CreateDefaultBuilder() .ConfigureCheckout( (context, services, config) => { config.ConfigureAdyenOptions(options => { options.AdyenApiKey = "ADYEN_API_KEY"; options.Environment = AdyenEnvironment.Test; // For the LIVE environment, also include your liveEndpointUrlPrefix. // options.LiveEndpointUrlPrefix = ""; }); services.AddAllCheckoutServices(); }) .Build(); var paymentsService = host.Services.GetRequiredService(); // Create the request object(s) var amount = new Amount { Currency = "USD", Value = 1000 }; var lineItem1 = new LineItem { Quantity = 1, AmountExcludingTax = 331, Description = "Shoes", Id = "Item #1", AmountIncludingTax = 400, TaxAmount = 69 }; var lineItem2 = new LineItem { Quantity = 2, AmountExcludingTax = 248, Description = "Socks", Id = "Item #2", AmountIncludingTax = 300, TaxAmount = 52 }; var shopperName = new ShopperName { FirstName = "Simon", LastName = "Hopper" }; var deliveryAddress = new DeliveryAddress { Country = "US", StateOrProvince = "CA", City = "San Francisco", HouseNumberOrName = "274", Street = "Brennan St.", PostalCode = "94107" }; var achDetails = new AchDetails { Type = AchDetails.TypeEnum. }; var billingAddress = new BillingAddress { Country = "US", StateOrProvince = "CA", City = "San Francisco", HouseNumberOrName = "274", Street = "Brennan St.", PostalCode = "94107" }; var paymentRequest = new PaymentRequest { Amount = amount, TelephoneNumber = "+16123456789", ShopperEmail = "s.hopper@example.com", Reference = "YOUR_ORDER_REFERENCE", LineItems = new List{ lineItem1, lineItem2 }, ShopperName = shopperName, MerchantAccount = "YOUR_MERCHANT_ACCOUNT", DeliveryAddress = deliveryAddress, CountryCode = "US", PaymentMethod = new CheckoutPaymentMethod(achDetails), BillingAddress = billingAddress, ReturnUrl = "my-app://adyen", ShopperReference = "YOUR_UNIQUE_SHOPPER_ID" }; string idempotencyKey = Guid.NewGuid().ToString(); // Send the request var result = await paymentsService.PaymentsAsync(paymentRequest, new RequestOptions().AddIdempotencyKey(idempotencyKey)); if (result.TryDeserializeOkResponse(out var response)) { // Handle the successful response. } ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.0.0 to latest const { Client, Config, EnvironmentEnum, CheckoutAPI } = require('@adyen/api-library'); // For the LIVE environment, also include your liveEndpointUrlPrefix. const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const amount = { currency: "USD", value: 1000 }; const lineItem1 = { quantity: 1, amountExcludingTax: 331, description: "Shoes", id: "Item #1", amountIncludingTax: 400, taxAmount: 69 }; const lineItem2 = { quantity: 2, amountExcludingTax: 248, description: "Socks", id: "Item #2", amountIncludingTax: 300, taxAmount: 52 }; const shopperName = { firstName: "Simon", lastName: "Hopper" }; const deliveryAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const achDetails = { type: "afterpaytouch_US" }; const billingAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const paymentRequest = { amount: amount, telephoneNumber: "+16123456789", shopperEmail: "s.hopper@example.com", reference: "YOUR_ORDER_REFERENCE", lineItems: [lineItem1, lineItem2], shopperName: shopperName, merchantAccount: "YOUR_MERCHANT_ACCOUNT", deliveryAddress: deliveryAddress, countryCode: "US", paymentMethod: achDetails, billingAddress: billingAddress, returnUrl: "my-app://adyen", shopperReference: "YOUR_UNIQUE_SHOPPER_ID" }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = await checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" }); ``` #### Go ```go // Adyen Go API Library v21.0.0 to latest import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/checkout" ) // For the LIVE environment, also include your liveEndpointUrlPrefix. client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) amount := checkout.Amount{ Currency: "USD", Value: 1000, } lineItem1 := checkout.LineItem{ Quantity: common.PtrInt64(1), AmountExcludingTax: common.PtrInt64(331), Description: common.PtrString("Shoes"), Id: common.PtrString("Item #1"), AmountIncludingTax: common.PtrInt64(400), TaxAmount: common.PtrInt64(69), } lineItem2 := checkout.LineItem{ Quantity: common.PtrInt64(2), AmountExcludingTax: common.PtrInt64(248), Description: common.PtrString("Socks"), Id: common.PtrString("Item #2"), AmountIncludingTax: common.PtrInt64(300), TaxAmount: common.PtrInt64(52), } shopperName := checkout.ShopperName{ FirstName: "Simon", LastName: "Hopper", } deliveryAddress := checkout.DeliveryAddress{ Country: "US", StateOrProvince: common.PtrString("CA"), City: "San Francisco", HouseNumberOrName: "274", Street: "Brennan St.", PostalCode: "94107", } achDetails := checkout.AchDetails{ Type: common.PtrString("afterpaytouch_US"), } billingAddress := checkout.BillingAddress{ Country: "US", StateOrProvince: common.PtrString("CA"), City: "San Francisco", HouseNumberOrName: "274", Street: "Brennan St.", PostalCode: "94107", } paymentRequest := checkout.PaymentRequest{ Amount: amount, TelephoneNumber: common.PtrString("+16123456789"), ShopperEmail: common.PtrString("s.hopper@example.com"), Reference: "YOUR_ORDER_REFERENCE", LineItems: []checkout.LineItem{ lineItem1, lineItem2, }, ShopperName: &shopperName, MerchantAccount: "YOUR_MERCHANT_ACCOUNT", DeliveryAddress: &deliveryAddress, CountryCode: common.PtrString("US"), PaymentMethod: checkout.AchDetailsAsCheckoutPaymentMethod(&achDetails), BillingAddress: &billingAddress, ReturnUrl: "my-app://adyen", ShopperReference: common.PtrString("YOUR_UNIQUE_SHOPPER_ID"), } // Send the request service := client.Checkout() req := service.PaymentsApi.PaymentsInput().IdempotencyKey("UUID").PaymentRequest(paymentRequest) res, httpRes, err := service.PaymentsApi.Payments(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v14.0.0 to latest import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "paymentMethod": { "type": "afterpaytouch_US" }, "amount": { "value": 1000, "currency": "USD" }, "shopperName": { "firstName": "Simon", "lastName": "Hopper" }, "shopperEmail": "s.hopper@example.com", "shopperReference": "YOUR_UNIQUE_SHOPPER_ID", "reference": "YOUR_ORDER_REFERENCE", "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "returnUrl": "my-app://adyen", "countryCode": "US", "telephoneNumber": "+16123456789", "billingAddress": { "city": "San Francisco", "country": "US", "houseNumberOrName": "274", "postalCode": "94107", "stateOrProvince": "CA", "street": "Brennan St." }, "deliveryAddress": { "city": "San Francisco", "country": "US", "houseNumberOrName": "274", "postalCode": "94107", "stateOrProvince": "CA", "street": "Brennan St." }, "lineItems": [{ "description": "Shoes", "quantity": "1", "amountIncludingTax": "400", "amountExcludingTax": "331", "taxAmount": "69", "id": "Item #1" }, { "description": "Socks", "quantity": "2", "amountIncludingTax": "300", "amountExcludingTax": "248", "taxAmount": "52", "id": "Item #2" }] } # Send the request result = adyen.checkout.payments_api.payments(request=json_request, idempotency_key="UUID") ``` #### Ruby ```rb # Adyen Ruby API Library v11.0.0 to latest require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { "paymentMethod" => { "type" => "afterpaytouch_US" }, "amount" => { "value" => 1000, "currency" => "USD" }, "shopperName" => { "firstName" => "Simon", "lastName" => "Hopper" }, "shopperEmail" => "s.hopper@example.com", "shopperReference" => "YOUR_UNIQUE_SHOPPER_ID", "reference" => "YOUR_ORDER_REFERENCE", "merchantAccount" => "YOUR_MERCHANT_ACCOUNT", "returnUrl" => "my-app://adyen", "countryCode" => "US", "telephoneNumber" => "+16123456789", "billingAddress" => { "city" => "San Francisco", "country" => "US", "houseNumberOrName" => "274", "postalCode" => "94107", "stateOrProvince" => "CA", "street" => "Brennan St." }, "deliveryAddress" => { "city" => "San Francisco", "country" => "US", "houseNumberOrName" => "274", "postalCode" => "94107", "stateOrProvince" => "CA", "street" => "Brennan St." }, "lineItems" => [{ "description" => "Shoes", "quantity" => "1", "amountIncludingTax" => "400", "amountExcludingTax" => "331", "taxAmount" => "69", "id" => "Item #1" }, { "description" => "Socks", "quantity" => "2", "amountIncludingTax" => "300", "amountExcludingTax" => "248", "taxAmount" => "52", "id" => "Item #2" }] } # Send the request result = adyen.checkout.payments_api.payments(request_body, headers: { 'Idempotency-Key' => 'UUID' }) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.0.0 to latest import { Client, Config, EnvironmentEnum, CheckoutAPI, Types } from "@adyen/api-library"; // For the LIVE environment, also include your liveEndpointUrlPrefix. const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const amount: Types.checkout.Amount = { currency: "USD", value: 1000 }; const lineItem1: Types.checkout.LineItem = { quantity: 1, amountExcludingTax: 331, description: "Shoes", id: "Item #1", amountIncludingTax: 400, taxAmount: 69 }; const lineItem2: Types.checkout.LineItem = { quantity: 2, amountExcludingTax: 248, description: "Socks", id: "Item #2", amountIncludingTax: 300, taxAmount: 52 }; const shopperName: Types.checkout.ShopperName = { firstName: "Simon", lastName: "Hopper" }; const deliveryAddress: Types.checkout.DeliveryAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const achDetails = { type: "afterpaytouch_US" } as unknown as Types.checkout.AchDetails; const billingAddress: Types.checkout.BillingAddress = { country: "US", stateOrProvince: "CA", city: "San Francisco", houseNumberOrName: "274", street: "Brennan St.", postalCode: "94107" }; const paymentRequest: Types.checkout.PaymentRequest = { amount: amount, telephoneNumber: "+16123456789", shopperEmail: "s.hopper@example.com", reference: "YOUR_ORDER_REFERENCE", lineItems: [lineItem1, lineItem2], shopperName: shopperName, merchantAccount: "YOUR_MERCHANT_ACCOUNT", deliveryAddress: deliveryAddress, countryCode: "US", paymentMethod: achDetails, billingAddress: billingAddress, returnUrl: "my-app://adyen", shopperReference: "YOUR_UNIQUE_SHOPPER_ID" }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = await checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" }); ``` ## Drop-in configuration There are no configuration steps specific to Cash App Afterpay required for Drop-in. ## Capture the payment Depending on your merchant account configuration, Cash App Afterpay payments are captured automatically after authorisation, or manually captured. If you prefer to capture the payment after the goods have been sent, you need to set up a [capture delay](https://docs.adyen.com/online-payments/capture#delayed-automatic-capture) or use [manual capture](https://docs.adyen.com/online-payments/capture#capture-a-payment). To partially capture a payment, you also need to use manual capture. Cash App Afterpay payments have to be captured within 13 days after authorisation. During authorisation, the shopper is charged for the first installment. If the payment is not captured within 13 days, before the second installment, Cash App Afterpay cancels the payment and refunds the first installment to the shopper. For testing purposes, Cash App Afterpay authorisations expire in one day. When you use manual capture, you need to capture test Cash App Afterpay payments within one day after authorisation. ### Full or partial manual captures When you use manual capture, in your [/payments/{paymentPspReference}/captures](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures) request specify: * [amount.value](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-amount-value): the full or partial amount that the shopper should pay. * [lineItems](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-lineItems): (optional) price and product information for the items that the shopper should pay for. Any unclaimed amount that is left over after partially capturing a payment is automatically cancelled. When your account is enabled for *multiple* partial captures, the unclaimed amount after an initial capture is not automatically cancelled. To set up multiple partial captures, contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other). Multiple partial captures will create a new invoice for each capture. ## Refunds and cancellations If a payment has not yet been captured, you can [cancel](https://docs.adyen.com/online-payments/cancel) it. If a payment has already been captured and you want to return the funds to the shopper, you need to [refund](https://docs.adyen.com/online-payments/refund) the payment. ### Full or partial refunds To fully or partially refund a payment, in your [/payments/{paymentPspReference}/refunds](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/refunds) request specify: * [amount.value](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/refunds#request-amount-value): the full or partial amount to be refunded to the shopper. * [lineItems](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/refunds#request-lineItems): (optional) price and product information about the refunded items. ## Discounts To offer discounts, your payment request must include the negative amount to be added to the original price. The following example shows how to specify a discount of 1 USD on Item #2: ```json { "amount":{ "value":800, "currency":"USD" }, ... "lineItems":[ { "description":"Test Cash App Afterpay 1", "quantity":"1", "amountIncludingTax":"400", "id":"Item #1" }, { "description":"Test Cash App Afterpay 2", "quantity":"2", "amountIncludingTax":"300", "id":"Item #2" } { "description":"Discount", "quantity":"2", "amountIncludingTax":"-100", "id":"Item #2 Discount" } ] } ``` ## Test and go live To test Cash App Afterpay payments, you need a test shopper account in the Afterpay sandbox environment. To create a test account: 1. Go to . 2. Enter a real email address and select **Continue**. You will get confirmations of payments and refunds like any other shopper on this email address. 3. From the drop-down menu, select the country/region for which you want to create a test shopper account: **US**. 4. Enter any mobile telephone number that is formatted correctly, and select **Continue**. Check the input box for hints on the format. The phone number will not be used. 5. When you are prompted to enter your SMS verification code, enter **111111**. 6. Follow the instructions on your screen to complete your profile, accept the terms and conditions, and select **Continue**. To test payments, add a test card to your Afterpay test shopper account.\ You can use the card details provided in the Afterpay [developer documentation](https://developers.afterpay.com/afterpay-online-developer/guides/api-development/test-environments), or use one of the Adyen [test cards](https://docs.adyen.com/development-resources/test-cards-and-credentials/test-card-numbers). Use CVV 000 to simulate authorised payments, or CVV 051 to simulate refused payments. You can check the status of test payments in your [Customer Area](https://ca-test.adyen.com/) > **Payments** > **Payment list**. Before you can accept live Cash App Afterpay payments, you need to [submit a request for Cash App Afterpay](https://docs.adyen.com/payment-methods/add-payment-methods) in your [live Customer Area](https://ca-live.adyen.com/). ## See also * [Web Drop-in integration guide](https://docs.adyen.com/online-payments/drop-in-web) * [Webhooks](https://docs.adyen.com/development-resources/webhooks) * [API Explorer](https://docs.adyen.com/api-explorer/Checkout/latest/overview)