Last updated

Partners charging travellers (VCC flow)

Use this guide when you support the Online Travel Service scenario, where you charge the traveller and pay Booking.com using a Virtual Credit Card (VCC).


Is this for you?

If you are authorised to directly charge travellers (merchant of record), and your agreement allows online payments and Virtual Credit Cards usage, this scenario applies to you.

Partner type
Payment method
partner1Partner with Booking.com online payment agreement.✓ Virtual Credit Card (VCC)

Follow these instructions and recommendations to create the payment data needed for your requests.

Use case

A traveller books an accommodation product through your platform. You charge the traveller using your own payment flow, and you pay Booking.com using a VCC.

Pre-requisites

This payment method is recommended for partners across all regions that meet the following pre-requisites:

Requirement
You have a Booking.com payment agreement that allows online payments.
You act as an Online Travel Service and charge the traveller directly.
You can generate and fund Virtual Credit Cards (VCCs) via your Payment Service Provider (PSP).
You are using a Demand API version that supports payment timings + VCC (minimum v2.9).

After confirming you meet all the pre-requisites follow these steps:

Integration steps
  1. Call the /orders/preview and read general_policies.payment to determine:

    • Available payment timings.
    • Required payment methods.
    • Payment schedules (dates).
  2. Create the order with orders/create including the correct details:

    • VCC" as payment.method
    • The selected payment.timing
    • and needed card.authentication data.

1. Check payment options

→ Use the orders/preview endpoint to determine:

  • Allowed payment.method and payment.timing.
  • Supported card types (methods.cards).

Example - pay_online_now

Look at data.accommodation.general_policies.payment in orders/preview response to identify payment timing.

Example response for pay_online_now:

{
  "accommodation": {
    "general_policies": {
      "payment": {
        "pay_online_now": {
          "method_required": true,
          "dates": [
            {
              "at": "2026-11-18",
              "price": {
                "accommodation_currency": 200.64,
                "booker_currency": 200.64
              }
            },
            {
              "at": "2026-12-03",
              "price": {
                "accommodation_currency": 5.14,
                "booker_currency": 5.14
              }
            }
          ],
          "methods": {
            "cards": [1, 2, 3, 4, ...]
          }
        }
      }
    }
  }
}

Example - pay_online_later

Look at data.accommodation.general_policies.payment.pay_online_later in response.

For the selected property and product the response retrieves:

{
  "accommodation": {
    "general_policies": {
      "payment": {
        "pay_online_later": {
          "method_required": true,
          "dates": [
            {
              "at": "2026-11-18",
              "price": {
                "accommodation_currency": 0.00,
                "booker_currency": 0.00
              }
            },
            {
              "at": "2026-12-01",
              "price": {
                "accommodation_currency": 200.64,
                "booker_currency": 200.64
              }
            },
            {
              "at": "2026-12-03",
              "price": {
                "accommodation_currency": 5.14,
                "booker_currency": 5.14
              }
            }
          ],
          "methods": {
            "cards": [1, 2, 3, 4, ...]
          }
        }
      }
    }
  }
}

How to interpret orders/preview responses

  • method_required = true → You must provide a payment method in /orders/create.

  • methods.cards → Those are the allowed card brand IDs. Your VCC must match one of them.

  • dates → Instalment schedule. The dates identify how and when the total price of the booking must be paid.

    • For pay_online_now - It contains two payment schedule items
    • For pay_online_later - three payment schedule items.

2. Create your order using Virtual credit card (VCC)

In this case, when paying online on behalf of the traveller using the Virtual Credit Card (VCC) you must include in the orders/create request:

  • payment.method → must be "card"

  • payment.timing → must be "pay_online_now" or "pay_online_later" (see examples)

  • card.authentication.sca_exemption → use virtual for VCC payments.

  • Card details must be: valid, funded, of a supported card type from methods.cards:

    • cardholder, cvc, expiry_date, number.
    • subtype (v3.2): Use it only if using cards that belong to supported special or co-branded programmes such as UnionPay. (More details here)
  • include_receipt → Optionally include the receipt in the order response.

    For this case do not use the airplus or business information fields.

Pay_online_now

The flow

drawing

  • Traveller pays on your platform.
  • You generate a VCC.
  • Booking.com charges the VCC according to the schedule.
  • Booking.com pays the property.

Example - orders/create request

{
  "payment": {
    "card": {
      "authentication": {
        "sca_exemption": "virtual"
      },
      "cardholder": "xxxx",
      "cvc": 123,
      "expiry_date": "2030-10",
      "number": "1234123412341234"
      "subtype": "unionpay_cobrand"
    },
    "include_receipt": true,
    "method": "card",
    "timing": "pay_online_now"
  }
}

Pay_online_later

The flow

  • Traveller books now providing card details.
  • You secure payment responsibility.
  • Booking.com charges your VCC later (based on schedule).
  • Booking.com pays the property.
Important

To prevent any payment charge issues, ensure that the VCC has sufficient funds at least 2 days prior to the pay-later collection date.

Example - orders/create request

Your request must be similar to:

{
  "payment": {
    "card": {
      "authentication": {
        "sca_exemption": "virtual"
      },
      "cardholder": "xxxx",
      "cvc": 123,
      "expiry_date": "2030-10",
      "number": "1234123412341234"
      "subtype": "unionpay_cobrand"
    },
    "include_receipt": true,
    "method": "card",
    "timing": "pay_online_later"
  }
}

Curious to know more?
  • For more tips and examples on how to preview and create an order, check the Orders section
  • Use the common/payments/cards endpoint to understand the card IDs retrieved in your response.
  • Learn more about payment dates in the schedules section.