ScalaPay
Private Preview
With ScalaPay, merchants can unlock flexible Buy Now, Pay Later (BNPL) options—like paying in 3 or 4 installments—giving shoppers the freedom to split payments while boosting conversion and enhancing the overall shopping experience Learn more about ScalaPay
Payment method properties
Markets (consumer) | IT, FR, DE, ES, PT, AT, BE, NL, FI |
Processing currencies | EUR |
Consumer currencies | EUR |
Authentication methods | REDIRECT |
Authentication timeout | 1 Hour |
Minimum payment amount | Varies based on the product |
Maximum payment amount | Varies based on the product |
Payment instrument | PASSTHROUGH_WALLET |
Recurring payments | No |
Separate captures | No |
Refund | Full - Partial - Multiple |
Refund validity | 90 days for Pay in 3 120 days for Pay in 4 |
Disputes | No |
Settlement risk | Yes |
Make a ScalaPay payment
ScalaPay payments follow our standardized REDIRECT
payment flow. However, we recommend including all relevant settings for any authentication methods you support. To make a payment, you'll need to provide the following data at minimum when calling our /v1/payment-charges API:
Field | Mandatory | Description |
---|---|---|
paymentMethod | Yes | SCALAPAY |
consumer.name | Yes | Full name of the consumer (used for display and identity verification) |
consumer.email | Yes | Consumer’s email address (used for receipts, verification, or support) |
consumer.phone | Yes | Consumer’s phone number in international format (e.g., +39...) |
consumer.country | Yes | ISO 2-letter country code of the consumer (e.g., NL, DE, ES, FR, IT) |
order.orderItems | Yes | The list of order items. (name, quantity, amount is mandatory) |
order.shippingMethod | Yes | Type of delivery |
Guidance
To optimize the consumer experience & payment approval rates with the BNPL provider, we highly recommend including the
consumer
&order
object parameters. For more information, see the API Reference.
consumer.client
- consumers client details like IP & UserAgent can be used for fraud prevention & enhanced scoring.consumer.billingAddress
- this details can support scoring to help get better approval rates.consumer.profile
- consider providing consumer related CRM info available with the merchant for supporting better scoring & approval with the BNPL provider.order.orderItems
- consider providing all cart details for the order items being purchased.order.shippingAddress
- consider providing when physical goods are expected to be delivered.order.industryData
- consider providing relevant industry details forAIRLINE
,TRAVEL
,EDUCATION
etc.
Request
POST /v1/payment-charges
{
"paymentMethod": "SCALAPAY",
"paymentMedium": "ECOMMERCE",
"initiator": "MERCHANT",
"paymentDescriptor": "Acme Webshop Says Thank You",
"merchantPaymentChargeReference": "merch_ref_12345",
"amount": {
"currency": "EUR",
"value": 12000
},
"authenticationSettings": [
{
"settings": {
"returnUrl": "https://www.ppro.com/"
},
"type": "REDIRECT"
}
],
"consumer": {
"name": "Luca Rossi",
"email": "[email protected]",
"phone": "+393311234567",
"birthDate": "1990-01-01",
"country": "IT",
"locale": "it-IT",
"client": {
"ip": "11.22.22.33",
"userAgent": "Mozilla/5.0 (X11; CrOS x86_64 ...) Chrome/51.0..."
},
"taxIdentification": "RSSLCU90A01H501U",
"merchantConsumerReference": "consumer_acme_12345",
"billingAddress": {
"firstName": "Luca",
"lastName": "Rossi",
"phoneNumber": "+393311234567",
"street": "Via del Corso, 10",
"postalCode": "00186",
"city": "Roma",
"region": "Lazio",
"country": "IT"
},
"profile": {
"createdDate": "2025-01-01",
"firstOrderDate": "2025-01-05",
"lastOrderDate": "2025-05-01",
"lifetimeOrderCount": 10,
"lifetimeOrderValue": 450000,
"lifetimeCanceledOrderCount": 3
}
},
"order": {
"orderItems": [
{
"sku": "TSHIRT01",
"category": "Apparel",
"subCategory": "T-Shirt",
"name": "Classic Cotton T-Shirt",
"quantity": 1,
"amount": 5000
},
{
"sku": "JACKET10",
"category": "Apparel",
"subCategory": "Jacket",
"name": "Black Leather Jacket",
"quantity": 1,
"amount": 15000
}
],
"shippingMethod": "TRACKED_DELIVERY",
"shippingAddress": {
"firstName": "Luca",
"lastName": "Rossi",
"phoneNumber": "+393311234567",
"street": "Piazza di Spagna, 3",
"postalCode": "00187",
"city": "Roma",
"region": "Lazio",
"country": "IT"
},
"orderReferenceNumber": "order_acme_12345",
"totalTaxAmount": 4400,
"industryData": [
{
"type": "TRAVEL",
"details": {
"travelType": "MULTIPLE",
"departureDate": "2025-06-01",
"returnDate": "2025-06-05",
"departureLocation": "AMS",
"arrivalLocation": "CDG",
"destinationCountry": "FR",
"travelCompany": "Air Fly Inc",
"travelerCount": 2,
"buyerAmongTravelers": true,
"travelClass": "ECONOMY",
"travelInsured": true,
"travelDiscountVoucher": "FREEFLY20",
"luggageSupplement": true,
"travelCanBeModifiedOrCanceled": true,
"stayCompany": "My stay Inc",
"stayDestination": "Paris",
"stayNightsCount": 5,
"stayRoomRange": "4_STARS"
}
}
]
},
"autoCapture": true,
"webhooksUrl": "https://webhook.site/50862fe4-0798-4d92-b3de-dcf1d11ba1ca"
}
Response
You'll receive our standard payment charge response with the available authentication methods:
{
"id": "charge_F9xzoNWNPnopyZ9zKidHb",
"paymentMethod": "SCALAPAY",
"paymentMedium": "ECOMMERCE",
"initiator": "MERCHANT",
"scheduleType": "UNSCHEDULED",
"instrumentId": "instr_WGReQN3r1yhgwYR1OrQeR",
"currency": "EUR",
"country": "IT",
"paymentDescriptor": "Acme Webshop Says Thank You",
"status": "AUTHENTICATION_PENDING",
"consumer": {
"name": "Luca Rossi",
"email": "[email protected]",
"phone": "+393311234567",
"birthDate": "1990-01-01",
"country": "IT",
"locale": "it-IT",
"client": {
"ip": "11.22.22.33",
"userAgent": "Mozilla/5.0 (X11; CrOS x86_64 ...) Chrome/51.0..."
},
"taxIdentification": "RSSLCU90A01H501U",
"merchantConsumerReference": "consumer_acme_12345",
"billingAddress": {
"firstName": "Luca",
"lastName": "Rossi",
"phoneNumber": "+393311234567",
"street": "Via del Corso, 10",
"postalCode": "00186",
"city": "Roma",
"region": "Lazio",
"country": "IT"
},
"profile": {
"createdDate": "2025-01-01",
"firstOrderDate": "2025-01-05",
"lastOrderDate": "2025-05-01",
"lifetimeOrderCount": 10,
"lifetimeOrderValue": 450000,
"lifetimeCanceledOrderCount": 3
}
},
"order": {
"orderItems": [
{
"sku": "TSHIRT01",
"category": "Apparel",
"subCategory": "T-Shirt",
"name": "Classic Cotton T-Shirt",
"quantity": 1,
"amount": 5000
},
{
"sku": "JACKET10",
"category": "Apparel",
"subCategory": "Jacket",
"name": "Black Leather Jacket",
"quantity": 1,
"amount": 15000
}
],
"shippingMethod": "TRACKED_DELIVERY",
"shippingAddress": {
"firstName": "Luca",
"lastName": "Rossi",
"phoneNumber": "+393311234567",
"street": "Piazza di Spagna, 3",
"postalCode": "00187",
"city": "Roma",
"region": "Lazio",
"country": "IT"
},
"industryData": [
{
"details": {
"travelType": "MULTIPLE",
"departureDate": "2025-06-01",
"returnDate": "2025-06-05",
"departureLocation": "AMS",
"arrivalLocation": "CDG",
"destinationCountry": "FR",
"travelCompany": "Air Fly Inc",
"travelerCount": 2,
"buyerAmongTravelers": true,
"travelClass": "ECONOMY",
"travelInsured": true,
"travelDiscountVoucher": "FREEFLY20",
"luggageSupplement": true,
"travelCanBeModifiedOrCanceled": true,
"stayCompany": "My stay Inc",
"stayDestination": "Paris",
"stayNightsCount": 5,
"stayRoomRange": "4_STARS"
},
"type": "TRAVEL"
}
],
"orderReferenceNumber": "order_acme_12345",
"totalTaxAmount": 4400
},
"authenticationMethods": [
{
"details": {
"requestUrl": "https://pay.scalapay.com/hpp/qwerty124",
"requestMethod": "GET"
},
"type": "REDIRECT"
}
],
"authorizations": [
{
"id": "authz_B77MEwwySeEeemVGrcA2u",
"amount": 12000,
"status": "AUTHENTICATION_PENDING",
"merchantPaymentChargeReference": "merch_ref_12345",
"createdAt": "2025-09-01T23:05:55.451Z",
"updatedAt": "2025-09-01T23:05:55.451Z"
}
],
"captures": [],
"refunds": [],
"voids": [],
"createdAt": "2025-09-01T23:05:55.365Z",
"updatedAt": "2025-09-01T23:05:55.451Z",
"_links": {
"authorizations": {
"href": "/v1/payment-charges/charge_F9xzoNWNPnopyZ9zKidHb/authorizations"
},
"captures": {
"href": "/v1/payment-charges/charge_F9xzoNWNPnopyZ9zKidHb/captures"
},
"refunds": {
"href": "/v1/payment-charges/charge_F9xzoNWNPnopyZ9zKidHb/refunds"
},
"voids": {
"href": "/v1/payment-charges/charge_F9xzoNWNPnopyZ9zKidHb/voids"
}
}
}
Pick the desired authentication method
REDIRECT
- Redirect your consumer to the returned
$.authenticationMethods[?(@.type == "REDIRECT")].details.requestUrl
.
For example, with the value ofhttps://redirection-target.ppro.com/
using the returned$.authenticationMethods[?(@.type == "REDIRECT")].details.requestMethod
HTTP method. - The consumer will be presented with the reference number and instructions to complete the payment.
Handling the payment result
REDIRECT
- After the consumer completes the payment, they are redirected to the
returnUrl
specified in the payment charge creation request. - Upon redirect back to your site, retrieve the latest payment status by performing a GET /v1/payment-charges/{paymentChargeId}. Use the returned
status
field to determine and display the final payment outcome to the consumer. - Additionally, webhooks are triggered to notify you of the payment result. This ensures you receive the outcome even if the consumer closes their browser or fails to return to your website.
Payment instrument
A PASSTHROUGH_WALLET
instrument will be created.
Request
GET /v1/payment-instruments/{instrument-id}
Response
{
"id": "instr_Asu0ig2PXXZSiNrhY44A5",
"type": "PASSTHROUGH_WALLET"
}
Sandbox testing
Scenario | Card Number | Expiry Date | CVV |
---|---|---|---|
✅ Success | 5200828282828210 | any date, greater than last installment date | 123 |
❗Failure | 4000000000000341 | any date, greater than last installment date | 123 |
Additional Information
Before you go live
- Customer journey of various products can be seen here
- Consider having a look at FloaPay's post-payment customer experience here
- Check industry-specific requirements: Reach out to your PPRO Account Manager to confirm if there are any additional data specifications needed for your industry. Providing these details in the
order.industryData
can help maximize your payment approval rates.
Branding guidelines
- Discover the media kit here
Updated 1 day ago