--- title: "PayBright Drop-in integration" description: "Add PayBright to an existing Drop-in integration." url: "https://docs.adyen.com/payment-methods/paybright/android-drop-in" source_url: "https://docs.adyen.com/payment-methods/paybright/android-drop-in.md" canonical: "https://docs.adyen.com/payment-methods/paybright/android-drop-in" last_modified: "2026-05-24T12:54:31+02:00" language: "en" --- # PayBright Drop-in integration Add PayBright to an existing Drop-in integration. [View source](/payment-methods/paybright/android-drop-in.md) PayBright has been acquired by [Affirm](/payment-methods/affirm). Adyen will not accept new PayBright integrations. Our [Android Drop-in](/online-payments/build-your-integration/sessions-flow?platform=Android\&integration=Drop-in) renders PayBright in your payment form, and redirects the shopper to complete the payment. As with other redirect payment methods, you need to [check the payment result](#check-the-payment-result) after the shopper returns to your app. When making an PayBright payment, you also need to: 1. Collect shopper details, and specify these [in your payment request](#make-a-payment). PayBright uses these for risk checks. 2. Provide information about the purchased items by specifying `lineItems` [in your payment request](#make-a-payment). 3. [Handle the redirect result](#handle-the-redirect) after the shopper returns to your website. ## Requirements | Requirement | Description | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | Make sure that you have built an Advanced flow [Android Drop-in integration](/online-payments/build-your-integration/advanced-flow/?platform=Android\&integration=Drop-in). | | **Setup steps** | Before you begin, [add PayBright in your Customer Area](/payment-methods/add-payment-methods). | ## Show PayBright in your payment form Drop-in uses the `countryCode` and the `amount.currency` from your [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) request to show the available payment methods to your shopper. To show PayBright in your payment form, specify in your [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) request: * [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods): **CA** * [amount.currency](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-amount): **CAD** * [amount.value](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-amount): The value of the payment, in [minor units](/development-resources/currency-codes). When the shopper proceeds to pay, Drop-in returns the `paymentComponentData.paymentMethod`. Pass the `paymentComponentData.paymentMethod` to your server — these are the shopper details that you need to make the payment. ## Make a payment 1. From your server, make a POST [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request, specifying: * `paymentMethod`: The `paymentComponentData.paymentMethod` from your client app. * [shopperName](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperName): The shopper's full name. * [dateOfBirth](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-dateOfBirth): The shopper's date of birth. * [shopperEmail](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperEmail): The shopper's email address. * [telephoneNumber](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-telephoneNumber): The shopper's phone number. * [shopperLocale](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/payments__reqParam_shopperLocale) Optional : A combination of language code and country code to define which language should be used in the PayBright checkout page. * [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-countryCode): The shopper's country. For example, `CA`. * [billingAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-billingAddress): The postal address to be included on the invoice. * [deliveryAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-deliveryAddress): The postal address where the purchased items will be shipped. * [lineItems](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-lineItems): Price and product information about the purchased items. * [returnUrl](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-returnUrl): URL to where the shopper should be redirected back to after they complete the payment. Get this URL from the Component in the `RedirectComponent.getReturnUrl(context)`. #### curl ```bash curl https://checkout-test.adyen.com/v68/payments \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -d '{ "merchantAccount": "ADYEN_MERCHANT_ACCOUNT", "reference": "YOUR_ORDER_REFERENCE", "paymentMethod": { "type": "paybright" }, "amount": { "value": 6000, "currency": "CAD" }, "shopperLocale": "en_CA", "countryCode": "CA", "telephoneNumber": "+16478491378", "shopperEmail": "s.hopper@adyen.com", "dateOfBirth": "1970-07-10", "shopperName": { "firstName": "Simon", "lastName": "Hopper" }, "billingAddress": { "city": "Toronto", "country": "CA", "houseNumberOrName": "240", "postalCode": "M5V 2C5", "street": "Richmond St W", "stateOrProvince": "ON" }, "deliveryAddress": { "city": "Toronto", "country": "CA", "houseNumberOrName": "240", "postalCode": "M5V 2C5", "street": "Richmond St W", "stateOrProvince": "ON" }, "lineItems": [ { "description": "Shoes", "quantity": "1", "amountIncludingTax": "4000", "amountExcludingTax": "3310", "taxCategory": "Low" }, { "description": "Socks", "quantity": "2", "amountIncludingTax": "3000", "amountExcludingTax": "2480", "taxCategory": "Low" }, { "description": "Discount", "amountExcludingTax": "-1000", "amountIncludingTax": "-1000", "quantity": "1", "taxCategory": "Low" } ], "returnUrl": "https://your-company.example.com/checkout?shopperOrder=12xy.." }' ``` #### Java ```java // Adyen Java API Library v27.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.checkout.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.model.RequestOptions; import com.adyen.service.checkout.*; // For the live environment, additionally include your liveEndpointUrlPrefix. Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Create the request object(s) Amount amount = new Amount() .currency("CAD") .value(6000L); LineItem lineItem1 = new LineItem() .quantity(1L) .amountExcludingTax(3310L) .description("Shoes") .amountIncludingTax(4000L); LineItem lineItem2 = new LineItem() .quantity(2L) .amountExcludingTax(2480L) .description("Socks") .amountIncludingTax(3000L); LineItem lineItem3 = new LineItem() .quantity(1L) .amountExcludingTax(-1000L) .description("Discount") .amountIncludingTax(-1000L); Name name = new Name() .firstName("Simon") .lastName("Hopper"); DeliveryAddress deliveryAddress = new DeliveryAddress() .country("CA") .stateOrProvince("ON") .city("Toronto") .houseNumberOrName("240") .street("Richmond St W") .postalCode("M5V 2C5"); PaymentDetails paymentDetails = new PaymentDetails() .type(PaymentDetails.TypeEnum.PAYBRIGHT); BillingAddress billingAddress = new BillingAddress() .country("CA") .stateOrProvince("ON") .city("Toronto") .houseNumberOrName("240") .street("Richmond St W") .postalCode("M5V 2C5"); PaymentRequest paymentRequest = new PaymentRequest() .amount(amount) .telephoneNumber("+16478491378") .shopperEmail("s.hopper@adyen.com") .dateOfBirth(OffsetDateTime.parse("1970-07-10")) .reference("YOUR_ORDER_REFERENCE") .lineItems(Arrays.asList(lineItem1, lineItem2, lineItem3)) .shopperName(name) .merchantAccount("ADYEN_MERCHANT_ACCOUNT") .deliveryAddress(deliveryAddress) .countryCode("CA") .paymentMethod(new CheckoutPaymentMethod(paymentDetails)) .shopperLocale("en_CA") .billingAddress(billingAddress) .returnUrl("https://your-company.example.com/checkout?shopperOrder=12xy.."); // Send the request PaymentsApi service = new PaymentsApi(client); PaymentResponse response = service.payments(paymentRequest, new RequestOptions().idempotencyKey("UUID")); ``` #### PHP ```php // Adyen PHP API Library v19.0.0 use Adyen\Client; use Adyen\Environment; use Adyen\Model\Checkout\Amount; use Adyen\Model\Checkout\LineItem; use Adyen\Model\Checkout\Name; use Adyen\Model\Checkout\DeliveryAddress; use Adyen\Model\Checkout\CheckoutPaymentMethod; use Adyen\Model\Checkout\BillingAddress; use Adyen\Model\Checkout\PaymentRequest; use Adyen\Service\Checkout\PaymentsApi; $client = new Client(); $client->setXApiKey("ADYEN_API_KEY"); // For the live environment, additionally include your liveEndpointUrlPrefix. $client->setEnvironment(Environment::TEST); // Create the request object(s) $amount = new Amount(); $amount ->setCurrency("CAD") ->setValue(6000); $lineItem1 = new LineItem(); $lineItem1 ->setQuantity(1) ->setAmountExcludingTax(3310) ->setDescription("Shoes") ->setAmountIncludingTax(4000); $lineItem2 = new LineItem(); $lineItem2 ->setQuantity(2) ->setAmountExcludingTax(2480) ->setDescription("Socks") ->setAmountIncludingTax(3000); $lineItem3 = new LineItem(); $lineItem3 ->setQuantity(1) ->setAmountExcludingTax(-1000) ->setDescription("Discount") ->setAmountIncludingTax(-1000); $name = new Name(); $name ->setFirstName("Simon") ->setLastName("Hopper"); $deliveryAddress = new DeliveryAddress(); $deliveryAddress ->setCountry("CA") ->setStateOrProvince("ON") ->setCity("Toronto") ->setHouseNumberOrName("240") ->setStreet("Richmond St W") ->setPostalCode("M5V 2C5"); $checkoutPaymentMethod = new CheckoutPaymentMethod(); $checkoutPaymentMethod ->setType("paybright"); $billingAddress = new BillingAddress(); $billingAddress ->setCountry("CA") ->setStateOrProvince("ON") ->setCity("Toronto") ->setHouseNumberOrName("240") ->setStreet("Richmond St W") ->setPostalCode("M5V 2C5"); $paymentRequest = new PaymentRequest(); $paymentRequest ->setAmount($amount) ->setTelephoneNumber("+16478491378") ->setShopperEmail("s.hopper@adyen.com") ->setDateOfBirth("1970-07-10") ->setReference("YOUR_ORDER_REFERENCE") ->setLineItems(array($lineItem1, $lineItem2, $lineItem3)) ->setShopperName($name) ->setMerchantAccount("ADYEN_MERCHANT_ACCOUNT") ->setDeliveryAddress($deliveryAddress) ->setCountryCode("CA") ->setPaymentMethod($checkoutPaymentMethod) ->setShopperLocale("en_CA") ->setBillingAddress($billingAddress) ->setReturnUrl("https://your-company.example.com/checkout?shopperOrder=12xy.."); $requestOptions['idempotencyKey'] = 'UUID'; // Send the request $service = new PaymentsApi($client); $response = $service->payments($paymentRequest, $requestOptions); ``` #### C\# ```cs // Adyen .net API Library v17.0.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Checkout; using Adyen.Service.Checkout; // For the live environment, additionally include your liveEndpointUrlPrefix. var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) Amount amount = new Amount { Currency = "CAD", Value = 6000 }; LineItem lineItem1 = new LineItem { Quantity = 1, AmountExcludingTax = 3310, Description = "Shoes", AmountIncludingTax = 4000 }; LineItem lineItem2 = new LineItem { Quantity = 2, AmountExcludingTax = 2480, Description = "Socks", AmountIncludingTax = 3000 }; LineItem lineItem3 = new LineItem { Quantity = 1, AmountExcludingTax = -1000, Description = "Discount", AmountIncludingTax = -1000 }; Name name = new Name { FirstName = "Simon", LastName = "Hopper" }; DeliveryAddress deliveryAddress = new DeliveryAddress { Country = "CA", StateOrProvince = "ON", City = "Toronto", HouseNumberOrName = "240", Street = "Richmond St W", PostalCode = "M5V 2C5" }; PaymentDetails paymentDetails = new PaymentDetails { Type = PaymentDetails.TypeEnum.Paybright }; BillingAddress billingAddress = new BillingAddress { Country = "CA", StateOrProvince = "ON", City = "Toronto", HouseNumberOrName = "240", Street = "Richmond St W", PostalCode = "M5V 2C5" }; PaymentRequest paymentRequest = new PaymentRequest { Amount = amount, TelephoneNumber = "+16478491378", ShopperEmail = "s.hopper@adyen.com", DateOfBirth = DateTime.Parse("1970-07-10"), Reference = "YOUR_ORDER_REFERENCE", LineItems = new List{ lineItem1, lineItem2, lineItem3 }, ShopperName = name, MerchantAccount = "ADYEN_MERCHANT_ACCOUNT", DeliveryAddress = deliveryAddress, CountryCode = "CA", PaymentMethod = new CheckoutPaymentMethod(paymentDetails), ShopperLocale = "en_CA", BillingAddress = billingAddress, ReturnUrl = "https://your-company.example.com/checkout?shopperOrder=12xy.." }; // Send the request var service = new PaymentsService(client); var response = service.Payments(paymentRequest, requestOptions: new RequestOptions { IdempotencyKey = "UUID"}); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v18.0.0 // Require the parts of the module you want to use const { Client, CheckoutAPI } = require('@adyen/api-library'); // Initialize the client object // For the live environment, additionally include your liveEndpointUrlPrefix. const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request object(s) const paymentRequest = { merchantAccount: "ADYEN_MERCHANT_ACCOUNT", reference: "YOUR_ORDER_REFERENCE", paymentMethod: { type: "paybright" }, amount: { value: 6000, currency: "CAD" }, shopperLocale: "en_CA", countryCode: "CA", telephoneNumber: "+16478491378", shopperEmail: "s.hopper@adyen.com", dateOfBirth: new Date("1970-07-10"), shopperName: { firstName: "Simon", lastName: "Hopper" }, billingAddress: { city: "Toronto", country: "CA", houseNumberOrName: "240", postalCode: "M5V 2C5", street: "Richmond St W", stateOrProvince: "ON" }, deliveryAddress: { city: "Toronto", country: "CA", houseNumberOrName: "240", postalCode: "M5V 2C5", street: "Richmond St W", stateOrProvince: "ON" }, lineItems: [ { description: "Shoes", quantity: "1", amountIncludingTax: "4000", amountExcludingTax: "3310", taxCategory: "Low" }, { description: "Socks", quantity: "2", amountIncludingTax: "3000", amountExcludingTax: "2480", taxCategory: "Low" }, { description: "Discount", amountExcludingTax: "-1000", amountIncludingTax: "-1000", quantity: "1", taxCategory: "Low" } ], returnUrl: "https://your-company.example.com/checkout?shopperOrder=12xy.." } // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" }); ``` #### Go ```go // Adyen Go API Library v10.4.0 import ( "context" "time" "github.com/adyen/adyen-go-api-library/v9/src/common" "github.com/adyen/adyen-go-api-library/v9/src/adyen" "github.com/adyen/adyen-go-api-library/v9/src/checkout" ) // For the live environment, additionally include your liveEndpointUrlPrefix. client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) amount := checkout.Amount{ Currency: "CAD", Value: 6000, } lineItem1 := checkout.LineItem{ Quantity: common.PtrInt64(1), AmountExcludingTax: common.PtrInt64(3310), Description: common.PtrString("Shoes"), AmountIncludingTax: common.PtrInt64(4000), } lineItem2 := checkout.LineItem{ Quantity: common.PtrInt64(2), AmountExcludingTax: common.PtrInt64(2480), Description: common.PtrString("Socks"), AmountIncludingTax: common.PtrInt64(3000), } lineItem3 := checkout.LineItem{ Quantity: common.PtrInt64(1), AmountExcludingTax: common.PtrInt64(-1000), Description: common.PtrString("Discount"), AmountIncludingTax: common.PtrInt64(-1000), } name := checkout.Name{ FirstName: "Simon", LastName: "Hopper", } deliveryAddress := checkout.DeliveryAddress{ Country: "CA", StateOrProvince: common.PtrString("ON"), City: "Toronto", HouseNumberOrName: "240", Street: "Richmond St W", PostalCode: "M5V 2C5", } paymentDetails := checkout.PaymentDetails{ Type: common.PtrString("paybright"), } billingAddress := checkout.BillingAddress{ Country: "CA", StateOrProvince: common.PtrString("ON"), City: "Toronto", HouseNumberOrName: "240", Street: "Richmond St W", PostalCode: "M5V 2C5", } paymentRequest := checkout.PaymentRequest{ Amount: amount, TelephoneNumber: common.PtrString("+16478491378"), ShopperEmail: common.PtrString("s.hopper@adyen.com"), DateOfBirth: func() *time.Time { t, _ := time.Parse(time.RFC3339, "1970-07-10"); return &t }(), Reference: "YOUR_ORDER_REFERENCE", LineItems: []checkout.LineItem{ lineItem1, lineItem2, lineItem3, }, ShopperName: &name, MerchantAccount: "ADYEN_MERCHANT_ACCOUNT", DeliveryAddress: &deliveryAddress, CountryCode: common.PtrString("CA"), PaymentMethod: checkout.PaymentDetailsAsCheckoutPaymentMethod(&paymentDetails), ShopperLocale: common.PtrString("en_CA"), BillingAddress: &billingAddress, ReturnUrl: "https://your-company.example.com/checkout?shopperOrder=12xy..", } // 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 v12.5.1 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" # For the live environment, additionally include your liveEndpointUrlPrefix. adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "merchantAccount": "ADYEN_MERCHANT_ACCOUNT", "reference": "YOUR_ORDER_REFERENCE", "paymentMethod": { "type": "paybright" }, "amount": { "value": 6000, "currency": "CAD" }, "shopperLocale": "en_CA", "countryCode": "CA", "telephoneNumber": "+16478491378", "shopperEmail": "s.hopper@adyen.com", "dateOfBirth": "1970-07-10", "shopperName": { "firstName": "Simon", "lastName": "Hopper" }, "billingAddress": { "city": "Toronto", "country": "CA", "houseNumberOrName": "240", "postalCode": "M5V 2C5", "street": "Richmond St W", "stateOrProvince": "ON" }, "deliveryAddress": { "city": "Toronto", "country": "CA", "houseNumberOrName": "240", "postalCode": "M5V 2C5", "street": "Richmond St W", "stateOrProvince": "ON" }, "lineItems": [ { "description": "Shoes", "quantity": "1", "amountIncludingTax": "4000", "amountExcludingTax": "3310", "taxCategory": "Low" }, { "description": "Socks", "quantity": "2", "amountIncludingTax": "3000", "amountExcludingTax": "2480", "taxCategory": "Low" }, { "description": "Discount", "amountExcludingTax": "-1000", "amountIncludingTax": "-1000", "quantity": "1", "taxCategory": "Low" } ], "returnUrl": "https://your-company.example.com/checkout?shopperOrder=12xy.." } # Send the request result = adyen.checkout.payments_api.payments(request=json_request, idempotency_key="UUID") ``` #### Ruby ```rb # Adyen Ruby API Library v9.5.1 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' # For the live environment, additionally include your liveEndpointUrlPrefix. adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :merchantAccount => 'ADYEN_MERCHANT_ACCOUNT', :reference => 'YOUR_ORDER_REFERENCE', :paymentMethod => { :type => 'paybright' }, :amount => { :value => 6000, :currency => 'CAD' }, :shopperLocale => 'en_CA', :countryCode => 'CA', :telephoneNumber => '+16478491378', :shopperEmail => 's.hopper@adyen.com', :dateOfBirth => '1970-07-10', :shopperName => { :firstName => 'Simon', :lastName => 'Hopper' }, :billingAddress => { :city => 'Toronto', :country => 'CA', :houseNumberOrName => '240', :postalCode => 'M5V 2C5', :street => 'Richmond St W', :stateOrProvince => 'ON' }, :deliveryAddress => { :city => 'Toronto', :country => 'CA', :houseNumberOrName => '240', :postalCode => 'M5V 2C5', :street => 'Richmond St W', :stateOrProvince => 'ON' }, :lineItems => [ { :description => 'Shoes', :quantity => '1', :amountIncludingTax => '4000', :amountExcludingTax => '3310', :taxCategory => 'Low' }, { :description => 'Socks', :quantity => '2', :amountIncludingTax => '3000', :amountExcludingTax => '2480', :taxCategory => 'Low' }, { :description => 'Discount', :amountExcludingTax => '-1000', :amountIncludingTax => '-1000', :quantity => '1', :taxCategory => 'Low' } ], :returnUrl => 'https://your-company.example.com/checkout?shopperOrder=12xy..' } # Send the request result = adyen.checkout.payments_api.payments(request_body, headers: { 'Idempotency-Key' => 'UUID' }) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v18.0.0 // Require the parts of the module you want to use import { Client, CheckoutAPI, Types } from "@adyen/api-library"; // Initialize the client object // For the live environment, additionally include your liveEndpointUrlPrefix. const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"}); // Create the request object(s) const amount: Types.checkout.Amount = { currency: "CAD", value: 6000 }; const lineItem1: Types.checkout.LineItem = { quantity: 1, amountExcludingTax: 3310, description: "Shoes", amountIncludingTax: 4000 }; const lineItem2: Types.checkout.LineItem = { quantity: 2, amountExcludingTax: 2480, description: "Socks", amountIncludingTax: 3000 }; const lineItem3: Types.checkout.LineItem = { quantity: 1, amountExcludingTax: -1000, description: "Discount", amountIncludingTax: -1000 }; const name: Types.checkout.Name = { firstName: "Simon", lastName: "Hopper" }; const deliveryAddress: Types.checkout.DeliveryAddress = { country: "CA", stateOrProvince: "ON", city: "Toronto", houseNumberOrName: "240", street: "Richmond St W", postalCode: "M5V 2C5" }; const paymentDetails: Types.checkout.PaymentDetails = { type: Types.checkout.PaymentDetails.TypeEnum.Paybright }; const billingAddress: Types.checkout.BillingAddress = { country: "CA", stateOrProvince: "ON", city: "Toronto", houseNumberOrName: "240", street: "Richmond St W", postalCode: "M5V 2C5" }; const paymentRequest: Types.checkout.PaymentRequest = { amount: amount, telephoneNumber: "+16478491378", shopperEmail: "s.hopper@adyen.com", dateOfBirth: new Date("1970-07-10"), reference: "YOUR_ORDER_REFERENCE", lineItems: [lineItem1, lineItem2, lineItem3], shopperName: name, merchantAccount: "ADYEN_MERCHANT_ACCOUNT", deliveryAddress: deliveryAddress, countryCode: "CA", paymentMethod: paymentDetails, shopperLocale: "en_CA", billingAddress: billingAddress, returnUrl: "https://your-company.example.com/checkout?shopperOrder=12xy.." }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" }); ``` In the [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) response, check the `action` object for the information that you must use to redirect the shopper. **/payments response** ```json { "resultCode":"RedirectShopper", "action":{ "paymentMethodType":"paybright", "method":"GET", "url":"https://checkoutshopper-test.adyen.com/checkoutshopper/checkoutPaymentRedirect?redirectData=...", "type":"redirect" } } ``` If your integration is [set up correctly](/online-payments/build-your-integration/advanced-flow/?platform=Android\&integration=Drop-in#make-a-payment), the `action` object is passed from your server to the client. ## Handle the redirect Drop-in redirects the shopper to complete the payment. When the shopper returns back to your app, Drop-in provides the `actionComponentData` object. From your server, make a POST [/payments/details](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/details) request providing: * `details`: The `actionComponentData.details` object from Drop-in. **/payments/details request** ```bash curl https://checkout-test.adyen.com/v72/payments/details \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -d '{ "details": { "redirectResult": "eyJ0cmFuc1N0YXR1cyI6IlkifQ==" } }' ``` You receive a response containing: * `resultCode`: Use this to present the payment result to your shopper. * `pspReference`: Our unique identifier for the transaction. **/payments/details response** ```json { "resultCode": "Authorised", "pspReference": "PPKFQ89R6QRXGN82" } ``` ## Present the payment result Use the `resultCode` that you received in the [/payments/details](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/details) response to present the payment result to your shopper. The `resultCode` values you can receive for PayBright are: | resultCode | Description | Action to take | | -------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | **Authorised** | The payment was successful. | Inform the shopper that the payment was successful. | | **Cancelled** | The shopper cancelled the payment. | Ask the shopper whether they want to continue with the order, or ask them to select a different payment method. | | **Refused** | The payment was refused by PayBright. | Ask the shopper to try the payment again using a different payment method. | []()If the shopper failed to return to your website or app, wait for webhooks to know the outcome of the payment: | eventCode | success field | Description | Action to take | | ----------------- | ------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------- | | **AUTHORISATION** | **false** | The transaction failed. | Cancel the order and inform the shopper that the payment failed. | | **AUTHORISATION** | **true** | The shopper successfully completed the payment. | Inform the shopper that the payment has been successful and proceed with the order. | ## Capture the payment By default, all PayBright payments are [captured automatically](/online-payments/capture) after authorisation. If you prefer to capture the payment after the goods have been sent, or when you want to partially capture payments, you need to set up a [capture delay](/online-payments/capture#delayed-automatic-capture) or use [manual capture](/online-payments/capture#manual-capture). When you capture the payment, the shopper is charged for the first installment. ### Partial captures Partial captures are not available if you enabled [automatic capture](/online-payments/capture) in your [Customer Area](https://ca-test.adyen.com/). To [partially capture](/online-payments/capture) a PayBright payment, specify in your [/capture](https://docs.adyen.com/api-explorer/#/Payment/capture) request: * `modificationAmount`: The amount that the shopper should pay.  * `additionalData.openinvoicedata`: Optional Price and product information for the items that the shopper should pay for. Although the field names are different, the information in `additionalData.openinvoicedata` is the same as what you provided in `lineItems` when making a [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request: | openinvoicedata | lineItems | Description | | --------------- | -------------------- | ------------------------------------------------------------------------------------------------- | | `itemAmount` | `amountExcludingTax` | The price for one item, without the tax, in [minor units](/development-resources/currency-codes). | | `itemVatAmount` | `taxAmount` | The tax amount for one item, in minor units. | The following example shows how to make a partial capture request if the shopper only kept one pair of socks from the two included in the original payment request. **/capture request** ```json { "originalReference":"COPY_PSP_REFERENCE_FROM_AUTHORISE_RESPONSE", "merchantAccount":"YOUR_MERCHANT_ACCOUNT", "modificationAmount":{ "currency":"", "value":"4500" }, "additionalData":{ "openinvoicedata.numberOfLines":"2", "openinvoicedata.line1.currencyCode":"", "openinvoicedata.line1.description":"Shoes", "openinvoicedata.line1.itemAmount":"3310", "openinvoicedata.line1.itemVatAmount":"690", "openinvoicedata.line1.numberOfItems":"1", "openinvoicedata.line2.currencyCode":"", "openinvoicedata.line2.description":"Socks", "openinvoicedata.line2.itemAmount":"1240", "openinvoicedata.line2.itemVatAmount":"260", "openinvoicedata.line2.numberOfItems":"1", }, "reference":"YOUR_CAPTURE_REFERENCE" } ``` 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](/online-payments/cancel) it. If the PayBright payment has already been captured and you want to return the funds to the shopper, you need to [refund](/online-payments/refund) it. ### Partial refunds To [partially refund](/online-payments/refund) a payment, specify in your [/payments/{paymentPspReference}/refunds](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/refunds) request: * `modificationAmount`: The amount to be refunded to the shopper. * `additionalData.openinvoicedata`: Optional Price and product information about the returned items. Providing `additionalData.openinvoicedata` is optional, and although the field names are different, the information is the same as what you provided in `lineItems` when making a [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request: | openinvoicedata | lineItems | Description | | --------------- | -------------------- | ------------------------------------------------------------------------------------------------- | | `itemAmount` | `amountExcludingTax` | The price for one item, without the tax, in [minor units](/development-resources/currency-codes). | | `itemVatAmount` | `taxAmount` | The tax amount for one item, in minor units. | The following example shows how to make a partial refund request if the shopper returned the shoes included in the original payment request. **/refund request** ```json { "merchantAccount":"YOUR_MERCHANT_ACCOUNT", "originalReference":"COPY_PSP_REFERENCE_FROM_AUTHORISE_RESPONSE", "modificationAmount":{ "currency":"", "value":"4000" }, "additionalData":{ "openinvoicedata.numberOfLines":"1", "openinvoicedata.line1.currencyCode":"", "openinvoicedata.line1.description":"Shoes", "openinvoicedata.line1.itemAmount":"3310", "openinvoicedata.line1.itemVatAmount":"690", "openinvoicedata.line1.numberOfItems":"1" }, "reference":"YOUR_REFUND_REFERENCE" } ``` ## Test and go live To test PayBright payments, use the test details provided in the [PayBright developer documentation](https://developer.paybright.com/docs/testing-resources-completed-pending-failed). You can check the status of test payments in your [Customer Area](https://ca-test.adyen.com/) > **Transactions** > **Payments**. Before you can accept live PayBright payments, you need to [submit a request for PayBright](/payment-methods/add-payment-methods) in your [live Customer Area](https://ca-live.adyen.com/). ## See also * [Android Drop-in integration guide](/online-payments/build-your-integration/sessions-flow/?platform=Android\&integration=Drop-in) * [Webhooks](/development-resources/webhooks) * [API Explorer](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/overview)