On this page, you can find additional configuration for adding Zip to your Drop-in integration.
Before you begin
This page assumes you have already:
API reference
Select which endpoint you're integrating:
This is the default with Drop-in v5.0.0 or later.
Parameter name | Required | Description |
---|---|---|
shopperName | Shopper's first name and last name. | |
shopperEmail | The shopper's email address. | |
dateOfBirth | The shopper's date of birth. | |
telephoneNumber | The shopper's phone number. | |
billingAddress | The address where to send the invoice. | |
deliveryAddress | ![]() |
The address where the purchased goods should be delivered. |
lineItems | ![]() |
Price and product information about the purchased items. You can optionally specify an imageURL to have the picture of the item on the Zip product page. The shopper will see this image when they log into their Zip account. The URL must have a maximum of 500 characters. |
curl https://checkout-test.adyen.com/v69/sessions \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
"merchantAccount": "YOUR_MERCHANT_ACCOUNT",
"reference": "YOUR_ORDER_REFERENCE",
"amount": {
"currency": "AUD",
"value": 1000
},
"telephoneNumber": "+61121212121",
"shopperEmail": "shopper@email.com",
"shopperName": {
"firstName": "Simon",
"lastName": "Hopper"
},
"billingAddress":{
"city":"Sydney",
"country":"AU",
"houseNumberOrName":"123",
"postalCode":"2000",
"stateOrProvince":"NSW",
"street":"Happy Street"
},
"deliveryAddress":{
"city":"Sydney",
"country":"AU",
"houseNumberOrName":"123",
"postalCode":"2000",
"stateOrProvince":"NSW",
"street":"Happy Street"
},
"lineItems":[
{
"description":"Shoes",
"quantity":"1",
"amountIncludingTax":"400",
"id":"Item #1"
},
{
"description":"Socks",
"quantity":"2",
"amountIncludingTax":"300",
"id":"Item #2"
}
]
"dateOfBirth": "1996-09-04",
"returnUrl": "my-app://adyen"
}'
Client client = new Client("Your X-API-KEY", Environment.TEST);
Checkout checkout = new Checkout(client);
CreateCheckoutSessionRequest sessionRequest = new CreateCheckoutSessionRequest();
sessionRequest.setMerchantAccount("YOUR_MERCHANT_ACCOUNT");
sessionRequest.setReference("YOUR_ORDER_REFERENCE");
Amount amount = new Amount();
amount.setCurrency("AUD}");
amount.setValue(1000L);
sessionRequest.setAmount(amount);
sessionRequest.setTelephoneNumber("+61121212121");
sessionRequest.setShopperEmail("shopper@email.com");
Name shopperName = new Name();
shopperName.setFirstName("Simon");
shopperName.setLastName("Hopper");
sessionRequest.setShopperName(shopperName);
BillingAddress billingAddress = new BillingAddress();
billingAddress.setCountry("AU");
billingAddress.setCity("Sydney");
billingAddress.setHouseNumberOrName("123");
billingAddress.setStreet("Happy Street");
billingAddress.setPostalCode("2000");
billingAddress.setStateOrProvince("NSW");
sessionRequest.setBillingAddress(billingAddress);
DeliveryAddress deliveryAddress = new DeliveryAddress();
deliveryAddress.setCountry("AU");
deliveryAddress.setCity("Sydney");
deliveryAddress.setHouseNumberOrName("123");
deliveryAddress.setStreet("Happy Street");
deliveryAddress.setPostalCode("2000");
deliveryAddress.setStateOrProvince("NSW");
sessionRequest.setDeliveryAddress(deliveryAddress);
sessionRequest.setDateOfBirth("1996-09-04");
sessionRequest.returnUrl("my-app://adyen");
LineItem lineItem1 = new LineItem();
lineItem1.setQuantity(1L);
lineItem1.setDescription("Shoes");
lineItem1.setId("Item #1");
lineItem1.setAmountIncludingTax(400L);
LineItem lineItem2 = new LineItem();
lineItem2.setQuantity(2L);
lineItem2.setDescription("Socks");
lineItem2.setId("Item #2");
lineItem2.setAmountIncludingTax(300L);
List<LineItem> lineItems = new ArrayList<LineItem>();
lineItems.add(lineItem1);
lineItems.add(lineItem2);
sessionRequest.setLineItems(lineItems);
CreateCheckoutSessionResponse sessionResponse = checkout.sessions(sessionRequest);
var checkoutSessionRequest = new CreateCheckoutSessionRequest
{
MerchantAccount = "YOUR_MERCHANT_ACCOUNT",
Reference = "YOUR_ORDER_REFERENCE",
Amount = new Adyen.Model.Checkout.Amount(currency: "AUD", value: 1000),
TelephoneNumber = "+61121212121",
ShopperEmail = "shopper@email.com",
ShopperName = {
FirstName = "Simon",
LastName = "Hopper"
},
DateOfBirth = new DateTime(1996, 09, 04),
ReturnUrl = "my-app://adyen",
BillingAddress = new Adyen.Model.Checkout.Address
{
City = "Sydney",
Country = "AU",
HouseNumberOrName = "123",
PostalCode = "2000",
Street = "Happy Street"
},
DeliveryAddress = new Adyen.Model.Checkout.Address
{
City = "Sydney",
Country = "AU",
HouseNumberOrName = "123",
PostalCode = "2000",
Street = "Happy Street"
},
LineItems = new List<LineItem>
{
new LineItem(quantity:1, description: "Shoes", id: "Item #1", amountIncludingTax: 400),
new LineItem(quantity:2, description: "Shoes", id: "Item #2", amountIncludingTax: 300),
}
};
var client = new Client("YOUR_X-API-KEY", Adyen.Model.Enum.Environment.Test);
var checkout = new Checkout(client);
var createCheckoutSessionResponse = checkout.Sessions(checkoutSessionRequest);
Drop-in configuration
There is no required Zip specific integration for Drop-in.
Recurring payments
We support recurring transactions for Zip. To make recurring payments, you need to:
Create a token
To create a token, include in your /payments request:
storePaymentMethod
: true- shopperReference: Your unique identifier for the shopper.
When the payment has been settled, you receive a webhook containing:
eventCode
: RECURRING_CONTRACToriginalReference
: ThepspReference
of the initial payment.pspReference
: This is the token that you need to make recurring payments for this shopper.
Make sure that your server is able to receive RECURRING_CONTRACT as part of your standard webhooks. You can enable the RECURRING_CONTRACT event code in the webhook settings page.
Make a payment with a token
To make a payment with the token, include in your /payments request:
-
paymentMethod.storedPaymentMethodId
: ThepspReference
from the RECURRING_CONTRACT.You can also get this value by using the /listRecurringDetails endpoint.
-
shopperReference
: The unique shopper identifier that you specified when creating the token. -
shopperInteraction
: ContAuth. -
recurringProcessingModel
: Subscription or UnscheduledCardOnFile.
For more information about the shopperInteraction
and recurringProcessingModel
fields, refer to Recurring transaction types.
curl https://checkout-test.adyen.com/v68/payments \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
"amount":{
"value":1000,
"currency":"AUD"
},
"paymentMethod":{
"type":"zip",
"storedPaymentMethodId":"7219687191761347"
},
"reference":"YOUR_ORDER_NUMBER",
"merchantAccount":"YOUR_MERCHANT_ACCOUNT",
"shopperReference":"YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
"shopperInteraction":"ContAuth",
"recurringProcessingModel": "Subscription"
}'
# Set your X-API-KEY with the API key from the Customer Area.
adyen = Adyen::Client.new
adyen.api_key = "YOUR_X-API-KEY"
response = adyen.checkout.payments({
:amount => {
:currency => "AUD",
:value => 1000
},
:reference => "YOUR_ORDER_NUMBER",
:paymentMethod => {
:type => "zip",
:storedPaymentMethodId => "7219687191761347"
},
:returnUrl => "https://your-company.com/checkout?shopperOrder=12xy..",
:shopperReference => "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
:merchantAccount => "YOUR_MERCHANT_ACCOUNT",
:shopperInteraction => "ContAuth",
:recurringProcessingModel => "Subscription"
})
// Set YOUR_X-API-KEY with the API key from the Customer Area.
// Change to Environment.LIVE and add the Live URL prefix when you're ready to accept live payments.
Client client = new Client("YOUR_X-API-KEY", Environment.TEST);
Checkout checkout = new Checkout(client);
PaymentsRequest paymentsRequest = new PaymentsRequest();
String merchantAccount = "YOUR_MERCHANT_ACCOUNT";
paymentsRequest.setMerchantAccount(merchantAccount);
Amount amount = new Amount();
amount.setCurrency("AUD");
amount.setValue(15000L);
paymentsRequest.setAmount(amount);
DefaultPaymentMethodDetails paymentMethodDetails = new DefaultPaymentMethodDetails();
paymentMethodDetails.setRecurringDetailReference("7219687191761347");
paymentMethodDetails.setType("zip");
paymentsRequest.setPaymentMethod(paymentMethodDetails);
paymentsRequest.setReference("YOUR_ORDER_NUMBER");
paymentsRequest.setReturnUrl("https://your-company.com/checkout?shopperOrder=12xy..");
paymentsRequest.setShopperInteraction("ContAuth");
paymentsRequest.setRecurringProcessingModel("Subscription");
PaymentsResponse paymentsResponse = checkout.payments(paymentsRequest);
// Set your X-API-KEY with the API key from the Customer Area.
$client = new \Adyen\Client();
$client->setXApiKey("YOUR_X-API-KEY");
$service = new \Adyen\Service\Checkout($client);
$params = array(
"amount" => array(
"currency" => "AUD",
"value" => 1000
),
"reference" => "YOUR_ORDER_NUMBER",
"paymentMethod" => array(
"type" => "zip",
"storedPaymentMethodId" => "7219687191761347"
),
"returnUrl" => "https://your-company.com/checkout?shopperOrder=12xy..",
"shopperReference" => "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
"recurringProcessingModel" => "Subscription",
"shopperInteraction" => "ContAuth",
"merchantAccount" => "YOUR_MERCHANT_ACCOUNT"
);
$result = $service->payments($params);
#Set your X-API-KEY with the API key from the Customer Area.
adyen = Adyen.Adyen()
adyen.client.xapikey = 'YOUR_X-API-KEY'
result = adyen.checkout.payments({
'amount': {
'value': 1000,
'currency': 'AUD'
},
'reference': 'YOUR_ORDER_NUMBER',
'paymentMethod': {
'type': 'zip',
'storedPaymentMethodId': '7219687191761347'
},
'returnUrl': 'https://your-company.com/checkout?shopperOrder=12xy..',
'shopperReference': 'YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j'
'merchantAccount': 'YOUR_MERCHANT_ACCOUNT',
'shopperInteraction':'ContAuth',
'recurringProcessingModel': 'Subscription'
})
// Set your X-API-KEY with the API key from the Customer Area.
var client = new Client ("YOUR_X-API-KEY", Environment.Test);
var checkout = new Checkout(client);
var amount = new Adyen.Model.Checkout.Amount("AUD", 1000);
var details = new Adyen.Model.Checkout.DefaultPaymentMethodDetails{
Type = "zip",
StoredPaymentMethodId = "7219687191761347"
};
var paymentsRequest = new Adyen.Model.Checkout.PaymentRequest
{
Reference = "YOUR_ORDER_NUMBER",
Amount = amount,
ReturnUrl = @"https://your-company.com/checkout?shopperOrder=12xy..",
MerchantAccount = "YOUR_MERCHANT_ACCOUNT",
ShopperReference = "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
RecurringProcessingModel = Adyen.Model.Checkout.PaymentRequest.RecurringProcessingModelEnum.Subscription,
ShopperInteraction = Adyen.Model.Checkout.PaymentRequest.ShopperInteractionEnum.ContAuth,
PaymentMethod = details
};
var paymentResponse = checkout.Payments(paymentsRequest);
// Set your X-API-KEY with the API key from the Customer Area.
const {Client, Config, CheckoutAPI} = require('@adyen/api-library');
const config = new Config();
// Set your X-API-KEY with the API key from the Customer Area.
config.apiKey = '[API_KEY]';
config.merchantAccount = '[YOUR_MERCHANT_ACCOUNT]';
const client = new Client({ config });
client.setEnvironment("TEST");
const checkout = new CheckoutAPI(client);
checkout.payments({
amount: { currency: "AUD", value: 1000 },
paymentMethod: {
type: 'zip',
storedPaymentMethodId: "7219687191761347"
},
reference: "YOUR_ORDER_NUMBER",
merchantAccount: config.merchantAccount,
shopperReference: "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
returnUrl: "https://your-company.com/checkout?shopperOrder=12xy..",
shopperInteraction: "ContAuth",
recurringProcessingModel: "Subscription"
}).then(res => res);
Test and go live
Create Zip test accounts using the credentials on Zip's test credentials page. You can then use your test account to make a payment in the test environment.
Check the status of Zip test payments in your Customer Area > Transactions > Payments.
Before you can accept live Zip payments, you need to submit a request for Zip in your live Customer Area.