--- title: "Atome for API only" description: "Add Atome to your API-only integration." url: "https://docs.adyen.com/payment-methods/atome/api-only" source_url: "https://docs.adyen.com/payment-methods/atome/api-only.md" canonical: "https://docs.adyen.com/payment-methods/atome/api-only" last_modified: "2026-05-25T12:55:01+02:00" language: "en" --- # Atome for API only Add Atome to your API-only integration. [View source](/payment-methods/atome/api-only.md) You can add Atome to your existing integration. The following instructions show only what you must add to your integration specifically for Atome. If an instruction on this page corresponds with a step in the main integration guide, it includes a link to corresponding step of the main integration guide. ## Requirements | Requirement | Description | | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | | **Integration type** | Make sure that you have an existing [API-only integration](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only). | | | **Action handling** | Make sure that your existing integration is set up to [handle the additional action](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only#additional-action). `action.type`: **redirect**. | | | **Setup steps** | Before you begin, [add Atome in your Customer Area](/payment-methods/add-payment-methods). | | ## How it works 1. The shopper selects Atome as the payment method. 2. The shopper enters their details in the [payment form that you build](#build-your-payment-form). 3. When you make the payment request, you [include additional information about the items that the shopper intends to purchase](#additional-parameters-payments). 4. Atome starts the repayment period for the shopper. ## Build your payment form Include fields to collect the following information from your shopper in the payment form. If you are using [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) to show which payment methods are available to the shopper,\ specify the following combination of [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) and [amount.currency](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-amount): | Country/region | `countryCode` | `amount.currency` | | -------------- | ------------- | ----------------- | | Malaysia | **MY** | **MYR** | | Singapore | **SG** | **SGD** | To perform risk checks, Atome requires you to collect the following shopper details: * Shopper's full name * Email address * Phone number * Billing address and delivery address You can [download the logo for Atome](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%2Bonly\&version=71#downloading-logos) to use in your form. ## Get Atome as an available payment method When you make the [/paymentMethods](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods) to [get available payment methods](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only#get-available-payment-methods), specify the following so that Atome is included in the response. | Parameter | Values | | ------------------------------------------------------------------------------------------------------------------ | ---------------- | | [countryCode](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-countryCode) | **MY**, **SG** | | [amount.currency](https://docs.adyen.com/api-explorer/Checkout/latest/post/paymentMethods#request-amount-currency) | **MYR**, **SGD** | **Example request for available payment methods** #### curl ```bash curl https://checkout-test.adyen.com/v72/paymentMethods \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -X POST -d '{ "merchantAccount": "ADYEN_MERCHANT_ACCOUNT", "countryCode": "SG", "amount": { "currency": "SGD", "value": 1000 }, "shopperLocale": "sg-SG" }' ``` #### Java ```java // Adyen Java API Library v40.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, also include your liveEndpointUrlPrefix. Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Create the request object(s) Amount amount = new Amount() .currency("SGD") .value(1000L); PaymentMethodsRequest paymentMethodsRequest = new PaymentMethodsRequest() .amount(amount) .merchantAccount("ADYEN_MERCHANT_ACCOUNT") .countryCode("SG") .shopperLocale("sg-SG"); // Send the request PaymentsApi service = new PaymentsApi(client); PaymentMethodsResponse response = service.paymentMethods(paymentMethodsRequest, 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("SGD") ->setValue(1000); $paymentMethodsRequest = new PaymentMethodsRequest(); $paymentMethodsRequest ->setAmount($amount) ->setMerchantAccount("ADYEN_MERCHANT_ACCOUNT") ->setCountryCode("SG") ->setShopperLocale("sg-SG"); $requestOptions['idempotencyKey'] = 'UUID'; // Send the request $service = new PaymentsApi($client); $response = $service->paymentMethods($paymentMethodsRequest, $requestOptions); ``` #### C\# ```cs // Adyen .NET API Library v32.2.1 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Checkout; using Adyen.Service.Checkout; // For the LIVE environment, also 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 = "SGD", Value = 1000 }; PaymentMethodsRequest paymentMethodsRequest = new PaymentMethodsRequest { Amount = amount, MerchantAccount = "ADYEN_MERCHANT_ACCOUNT", CountryCode = "SG", ShopperLocale = "sg-SG" }; // Send the request var service = new PaymentsService(client); var response = service.PaymentMethods(paymentMethodsRequest, requestOptions: new RequestOptions { IdempotencyKey = "UUID"}); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.0.0 const { Client, 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 paymentMethodsRequest = { merchantAccount: "ADYEN_MERCHANT_ACCOUNT", countryCode: "SG", amount: { currency: "SGD", value: 1000 }, shopperLocale: "sg-SG" } // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.PaymentsApi.paymentMethods(paymentMethodsRequest, { idempotencyKey: "UUID" }); ``` #### Go ```go // Adyen Go API Library v21.1.0 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: "SGD", Value: 1000, } paymentMethodsRequest := checkout.PaymentMethodsRequest{ Amount: &amount, MerchantAccount: "ADYEN_MERCHANT_ACCOUNT", CountryCode: common.PtrString("SG"), ShopperLocale: common.PtrString("sg-SG"), } // Send the request service := client.Checkout() req := service.PaymentsApi.PaymentMethodsInput().IdempotencyKey("UUID").PaymentMethodsRequest(paymentMethodsRequest) res, httpRes, err := service.PaymentsApi.PaymentMethods(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v14.0.0 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 = { "merchantAccount": "ADYEN_MERCHANT_ACCOUNT", "countryCode": "SG", "amount": { "currency": "SGD", "value": 1000 }, "shopperLocale": "sg-SG" } # Send the request result = adyen.checkout.payments_api.payment_methods(request=json_request, idempotency_key="UUID") ``` #### Ruby ```rb # Adyen Ruby API Library v11.0.0 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 = { :merchantAccount => 'ADYEN_MERCHANT_ACCOUNT', :countryCode => 'SG', :amount => { :currency => 'SGD', :value => 1000 }, :shopperLocale => 'sg-SG' } # Send the request result = adyen.checkout.payments_api.payment_methods(request_body, headers: { 'Idempotency-Key' => 'UUID' }) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.0.0 import { Client, 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: "SGD", value: 1000 }; const paymentMethodsRequest: Types.checkout.PaymentMethodsRequest = { amount: amount, merchantAccount: "ADYEN_MERCHANT_ACCOUNT", countryCode: "SG", shopperLocale: "sg-SG" }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.PaymentsApi.paymentMethods(paymentMethodsRequest, { idempotencyKey: "UUID" }); ``` **Example response with Atome available** ```json { "paymentMethods": [ { "name": "Atome", "type": "atome" } ] } ``` ## Add additional parameters to your /payments request When you [make a payment](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only#make-a-payment), add the following parameters: | Parameter | Required | Description | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [paymentMethod.type](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-paymentMethod) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **atome** | | [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. | | [telephoneNumber](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-telephoneNumber) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The shopper's phone number. | | [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. | | [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. | | [deliveryAddress](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-deliveryAddress) | | The postal address where the goods will be shipped. Optional if `billingAddress` and `deliveryAddress` are the same. | | [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-") | For Malaysia set to **MY**, for Singapore set to **SG**. Make sure that you use a supported combination of country/region and currency: **MY** with **MYR**, and **SG** with **SGD**. | **Example payment request for Atome** #### curl ```bash curl https://checkout-test.adyen.com/v72/payments \ -H 'x-API-key: ADYEN_API_KEY' \ -H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \ -H 'content-type: application/json' \ -X POST -d '{ "amount":{ "currency":"SGD", "value":1000 }, "paymentMethod":{ "type":"atome" }, "reference":"YOUR_ORDER_NUMBER", "returnUrl":"https://your-company.com/checkout?shopperOrder=12xy..", "merchantAccount":"ADYEN_MERCHANT_ACCOUNT", "shopperName":{ "firstName":"Simon", "lastName":"Hopper" }, "shopperEmail":"s.hopper@example.com", "countryCode":"SG", "telephoneNumber":"6512345678", "billingAddress":{ "city":"Singapore", "country":"SG", "houseNumberOrName":"109", "postalCode":"179097", "stateOrProvince":"Singapore", "street":"North Bridge Road" }, "deliveryAddress":{ "city":"Singapore", "country":"SG", "houseNumberOrName":"109", "postalCode":"179097", "stateOrProvince":"Singapore", "street":"North Bridge Road" }, "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 v41.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, also include your liveEndpointUrlPrefix. Client client = new Client("ADYEN_API_KEY", Environment.TEST); // 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("SGD") .value(1000L); ShopperName shopperName = new ShopperName() .firstName("Simon") .lastName("Hopper"); DeliveryAddress deliveryAddress = new DeliveryAddress() .country("SG") .stateOrProvince("Singapore") .city("Singapore") .houseNumberOrName("109") .street("North Bridge Road") .postalCode("179097"); PaymentDetails paymentDetails = new PaymentDetails() .type(PaymentDetails.TypeEnum.ATOME); BillingAddress billingAddress = new BillingAddress() .country("SG") .stateOrProvince("Singapore") .city("Singapore") .houseNumberOrName("109") .street("North Bridge Road") .postalCode("179097"); PaymentRequest paymentRequest = new PaymentRequest() .reference("YOUR_ORDER_NUMBER") .lineItems(Arrays.asList(lineItem1, lineItem2)) .amount(amount) .shopperName(shopperName) .telephoneNumber("6512345678") .merchantAccount("ADYEN_MERCHANT_ACCOUNT") .deliveryAddress(deliveryAddress) .countryCode("SG") .paymentMethod(new CheckoutPaymentMethod(paymentDetails)) .shopperEmail("s.hopper@example.com") .billingAddress(billingAddress) .returnUrl("https://your-company.com/checkout?shopperOrder=12xy.."); // 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) $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("SGD") ->setValue(1000); $shopperName = new ShopperName(); $shopperName ->setFirstName("Simon") ->setLastName("Hopper"); $deliveryAddress = new DeliveryAddress(); $deliveryAddress ->setCountry("SG") ->setStateOrProvince("Singapore") ->setCity("Singapore") ->setHouseNumberOrName("109") ->setStreet("North Bridge Road") ->setPostalCode("179097"); $checkoutPaymentMethod = new CheckoutPaymentMethod(); $checkoutPaymentMethod ->setType("atome"); $billingAddress = new BillingAddress(); $billingAddress ->setCountry("SG") ->setStateOrProvince("Singapore") ->setCity("Singapore") ->setHouseNumberOrName("109") ->setStreet("North Bridge Road") ->setPostalCode("179097"); $paymentRequest = new PaymentRequest(); $paymentRequest ->setReference("YOUR_ORDER_NUMBER") ->setLineItems(array($lineItem1, $lineItem2)) ->setAmount($amount) ->setShopperName($shopperName) ->setTelephoneNumber("6512345678") ->setMerchantAccount("ADYEN_MERCHANT_ACCOUNT") ->setDeliveryAddress($deliveryAddress) ->setCountryCode("SG") ->setPaymentMethod($checkoutPaymentMethod) ->setShopperEmail("s.hopper@example.com") ->setBillingAddress($billingAddress) ->setReturnUrl("https://your-company.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 v33.0.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Checkout; using Adyen.Service.Checkout; // For the LIVE environment, also include your liveEndpointUrlPrefix. var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) LineItem lineItem1 = new LineItem { Quantity = 1, AmountExcludingTax = 331, Description = "Shoes", Id = "Item #1", AmountIncludingTax = 400, TaxAmount = 69 }; LineItem lineItem2 = new LineItem { Quantity = 2, AmountExcludingTax = 248, Description = "Socks", Id = "Item #2", AmountIncludingTax = 300, TaxAmount = 52 }; Amount amount = new Amount { Currency = "SGD", Value = 1000 }; ShopperName shopperName = new ShopperName { FirstName = "Simon", LastName = "Hopper" }; DeliveryAddress deliveryAddress = new DeliveryAddress { Country = "SG", StateOrProvince = "Singapore", City = "Singapore", HouseNumberOrName = "109", Street = "North Bridge Road", PostalCode = "179097" }; PaymentDetails paymentDetails = new PaymentDetails { Type = PaymentDetails.TypeEnum.Atome }; BillingAddress billingAddress = new BillingAddress { Country = "SG", StateOrProvince = "Singapore", City = "Singapore", HouseNumberOrName = "109", Street = "North Bridge Road", PostalCode = "179097" }; PaymentRequest paymentRequest = new PaymentRequest { Reference = "YOUR_ORDER_NUMBER", LineItems = new List{ lineItem1, lineItem2 }, Amount = amount, ShopperName = shopperName, TelephoneNumber = "6512345678", MerchantAccount = "ADYEN_MERCHANT_ACCOUNT", DeliveryAddress = deliveryAddress, CountryCode = "SG", PaymentMethod = new CheckoutPaymentMethod(paymentDetails), ShopperEmail = "s.hopper@example.com", BillingAddress = billingAddress, ReturnUrl = "https://your-company.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 v30.1.0 const { Client, 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 paymentRequest = { amount: { currency: "SGD", value: 1000 }, paymentMethod: { type: "atome" }, reference: "YOUR_ORDER_NUMBER", returnUrl: "https://your-company.com/checkout?shopperOrder=12xy..", merchantAccount: "ADYEN_MERCHANT_ACCOUNT", shopperName: { firstName: "Simon", lastName: "Hopper" }, shopperEmail: "s.hopper@example.com", countryCode: "SG", telephoneNumber: "6512345678", billingAddress: { city: "Singapore", country: "SG", houseNumberOrName: "109", postalCode: "179097", stateOrProvince: "Singapore", street: "North Bridge Road" }, deliveryAddress: { city: "Singapore", country: "SG", houseNumberOrName: "109", postalCode: "179097", stateOrProvince: "Singapore", street: "North Bridge Road" }, 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 const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" }); ``` #### Go ```go // Adyen Go API Library v21.1.0 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: "SGD", Value: 1000, } shopperName := checkout.ShopperName{ FirstName: "Simon", LastName: "Hopper", } deliveryAddress := checkout.DeliveryAddress{ Country: "SG", StateOrProvince: common.PtrString("Singapore"), City: "Singapore", HouseNumberOrName: "109", Street: "North Bridge Road", PostalCode: "179097", } paymentDetails := checkout.PaymentDetails{ Type: common.PtrString("atome"), } billingAddress := checkout.BillingAddress{ Country: "SG", StateOrProvince: common.PtrString("Singapore"), City: "Singapore", HouseNumberOrName: "109", Street: "North Bridge Road", PostalCode: "179097", } paymentRequest := checkout.PaymentRequest{ Reference: "YOUR_ORDER_NUMBER", LineItems: []checkout.LineItem{ lineItem1, lineItem2, }, Amount: amount, ShopperName: &shopperName, TelephoneNumber: common.PtrString("6512345678"), MerchantAccount: "ADYEN_MERCHANT_ACCOUNT", DeliveryAddress: &deliveryAddress, CountryCode: common.PtrString("SG"), PaymentMethod: checkout.PaymentDetailsAsCheckoutPaymentMethod(&paymentDetails), ShopperEmail: common.PtrString("s.hopper@example.com"), BillingAddress: &billingAddress, ReturnUrl: "https://your-company.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 v14.0.0 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": { "currency": "SGD", "value": 1000 }, "paymentMethod": { "type": "atome" }, "reference": "YOUR_ORDER_NUMBER", "returnUrl": "https://your-company.com/checkout?shopperOrder=12xy..", "merchantAccount": "ADYEN_MERCHANT_ACCOUNT", "shopperName": { "firstName": "Simon", "lastName": "Hopper" }, "shopperEmail": "s.hopper@example.com", "countryCode": "SG", "telephoneNumber": "6512345678", "billingAddress": { "city": "Singapore", "country": "SG", "houseNumberOrName": "109", "postalCode": "179097", "stateOrProvince": "Singapore", "street": "North Bridge Road" }, "deliveryAddress": { "city": "Singapore", "country": "SG", "houseNumberOrName": "109", "postalCode": "179097", "stateOrProvince": "Singapore", "street": "North Bridge Road" }, "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.1.0 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 => { :currency => 'SGD', :value => 1000 }, :paymentMethod => { :type => 'atome' }, :reference => 'YOUR_ORDER_NUMBER', :returnUrl => 'https://your-company.com/checkout?shopperOrder=12xy..', :merchantAccount => 'ADYEN_MERCHANT_ACCOUNT', :shopperName => { :firstName => 'Simon', :lastName => 'Hopper' }, :shopperEmail => 's.hopper@example.com', :countryCode => 'SG', :telephoneNumber => '6512345678', :billingAddress => { :city => 'Singapore', :country => 'SG', :houseNumberOrName => '109', :postalCode => '179097', :stateOrProvince => 'Singapore', :street => 'North Bridge Road' }, :deliveryAddress => { :city => 'Singapore', :country => 'SG', :houseNumberOrName => '109', :postalCode => '179097', :stateOrProvince => 'Singapore', :street => 'North Bridge Road' }, :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.1.0 import { Client, 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: "SGD", value: 1000 }; const shopperName: Types.checkout.ShopperName = { firstName: "Simon", lastName: "Hopper" }; const deliveryAddress: Types.checkout.DeliveryAddress = { country: "SG", stateOrProvince: "Singapore", city: "Singapore", houseNumberOrName: "109", street: "North Bridge Road", postalCode: "179097" }; const paymentDetails: Types.checkout.PaymentDetails = { type: Types.checkout.PaymentDetails.TypeEnum.Atome }; const billingAddress: Types.checkout.BillingAddress = { country: "SG", stateOrProvince: "Singapore", city: "Singapore", houseNumberOrName: "109", street: "North Bridge Road", postalCode: "179097" }; const paymentRequest: Types.checkout.PaymentRequest = { reference: "YOUR_ORDER_NUMBER", lineItems: [lineItem1, lineItem2], amount: amount, shopperName: shopperName, telephoneNumber: "6512345678", merchantAccount: "ADYEN_MERCHANT_ACCOUNT", deliveryAddress: deliveryAddress, countryCode: "SG", paymentMethod: paymentDetails, shopperEmail: "s.hopper@example.com", billingAddress: billingAddress, returnUrl: "https://your-company.com/checkout?shopperOrder=12xy.." }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" }); ``` The response includes the `action.type`: **redirect**. **Example response with an additional action** ```json { "resultCode":"RedirectShopper", "action":{ "paymentMethodType":"atome", "method":"GET", "url":"https://checkoutshopper-test.adyen.com/checkoutshopper/checkoutPaymentRedirect?redirectData=...", "type":"redirect" } } ``` ## Refunds and cancellations ### 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: * [amount](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/refunds#request-amount): The amount to be refunded to the shopper. ## Test and go live To test Atome payments, you need a test shopper account in the Atome sandbox environment. To request a test account, reach out to your Adyen contact. If you are testing in multiple countries/regions, use a different test account for each location. To test the QR code flow, download one of the following test apps: #### For Malaysia (MY) * [Android app](https://www.pgyer.com/vBsC) * [iOS app](https://testflight.apple.com/join/SPxKJdnB) #### For Singapore (SG) * [Android app](https://www.pgyer.com/m4OL) * [iOS app](https://testflight.apple.com/join/SPxKJdnB) You can check the status of test payments in your [Customer Area](https://ca-test.adyen.com/) > **Transactions** > **Payments**. To accept live Atome payments, you must contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to add Atome in your live Customer Area. ## See also * [API-only integration guide](/online-payments/build-your-integration/advanced-flow/?platform=Web\&integration=API%20only)