> For the complete documentation index, see [llms.txt](https://resources.atriptech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://resources.atriptech.com/api-document/product-guides/booking/booking-step-guides/payment-and-ticketing/vcc-pass-through-guide.md).

# VCC Pass-through Guide

Use virtual credit cards for airline payments, manage price changes, and recover from payment failures.

## VCC Pass-through Guide

### What is VCC payment

**VCC Pass-through** lets agents, including OTAs and TMCs, settle airline payments with virtual credit cards (VCCs). You send the customer's VCC details directly to the airline. You do not need to store or process the card data.

#### Key benefits

* **Security:** Avoid storing card data and reduce data-exposure risk.
* **Simpler compliance:** Airlines or payment providers handle sensitive payment data.
* **Flexible settlement:** Set VCC limits or use single-use cards for refunds and cost control.
* **Automation:** Support high-volume payments and reduce reconciliation effort.

### VCC payment flow

{% stepper %}
{% step %}

### Get the price

Retrieve the VCC payment price from `VendorFare` in the Search, Verify, or Order response.
{% endstep %}

{% step %}

### Pay

Call `pay.do` with these required parameters:

```java
{
    "orderNo": "order number",
    "supportCreditTransPayment": "1",
    "creditCard": {
        "cardNumber": "card number",
        "cardExpireMonth": "expiry month (MM)",
        "cardExpireYear": "expiry year (YYYY)",
        "cardCVV": "***",
        "cardHolderLastName": "cardholder last name",
        "cardHolderFirstName": "cardholder first name",
        "cardHolderCountry": "cardholder country",
        "cardHolderCity": "cardholder city",
        "cardHolderPostCode": "postal code",
        "cardHolderAddress": "billing address"
    },
    "paymentMethod": "3"  // Use 3 for VCC payment
}
```

Key fields:

| Field            | Requirement | Description                                                       |
| ---------------- | ----------- | ----------------------------------------------------------------- |
| paymentMethod    | Required    | Send `3` for VCC payment.                                         |
| creditCard       | Required    | Send complete virtual-card details.                               |
| **paymentLimit** | Optional    | Set the highest acceptable fare. See price change handling below. |
| {% endstep %}    |             |                                                                   |
| {% endstepper %} |             |                                                                   |

### Requirements and considerations

#### Eligible orders

* VCC is supported when Search returns `supportCreditTransPayment=1` and `vendorFare` contains a price.
* The airline does not support VCC when `supportCreditTransPayment=0` or `vendorFare` is empty.

Airlines may apply additional restrictions to customer-owned VCC pass-through. Check [Airline-specific VCC Pass-through Restrictions](/api-document/product-guides/booking/booking-step-guides/payment-and-ticketing/vcc-pass-through-guide/airline-specific-vcc-pass-through-restrictions.md) for route, channel, fee, and card-network limitations.

#### Price change handling

VCC Pass-through sends the customer's card directly to the airline. Atlas cannot protect the fare. Airlines that cannot hold seats or add payment fees may change the final price. The customer bears any difference. Atlas applies these safeguards:

{% stepper %}
{% step %}

### When the airline price decreases

The system issues the ticket at the lower price. The VCC statement shows the final charged amount.
{% endstep %}

{% step %}

### When the airline price increases

* **With a limit:** Set **`paymentLimit`** to the highest acceptable amount. Payment proceeds when the final amount is within the limit. Otherwise, ticketing fails.
* **Without a limit:** The default limit is the order amount plus `max(5% of order amount, USD 5 per passenger)`. The price-variation threshold is the higher of these two calculated amounts:

  * **Case 1 — 2 passengers:** The per-passenger allowance is `USD 5 × 2 = USD 10`. The `5%` allowance is `USD 2.5`. The price-variation threshold is `USD 10`.
  * **Case 2 — 1 passenger:** The per-passenger allowance is `USD 5`. The `5%` allowance is `USD 15`. The price-variation threshold is `USD 15`.

  Ensure the VCC has enough balance for the order amount and the applicable threshold. Otherwise, the order is cancelled.
  {% endstep %}
  {% endstepper %}

#### VCC recommendations

* Use single-use cards. Do not retry multi-use cards after a failure. This avoids duplicate charges.
* Add a buffer to the VCC amount for airline price changes.

#### Improve payment success rates

**Price changes**

* Set an acceptable payment limit.
* Add a buffer to the VCC amount.

**Basic setup**

* **Enable automatic 3DS approval:** Ask your VCC provider to enable automatic 3DS authentication for all transactions.

**Card strategy**

| **Category**                | **Recommendation**                                                                                                                                                                                                                                    |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Card type**               | <p>✅ Prefer locally issued mainstream cards that match the airline's region, such as Visa or Mastercard for European and North American airlines.<br>⚠️ Avoid prepaid cards, anonymous virtual-bank cards, and cards issued in high-risk regions.</p> |
| **Transaction limit**       | Keep each transaction at or below USD 5,000. Confirm higher limits with the issuer in advance.                                                                                                                                                        |
| **Transaction interval**    | Wait at least 15 minutes between payments with the same card number.                                                                                                                                                                                  |
| **Environment consistency** | Match the payment IP address and device fingerprint to the card region. Use a local VPN only when necessary.                                                                                                                                          |

**Cardholder information**

* Match the cardholder name exactly to the booking information.
* Use a realistic billing address. Prefer the cardholder's location.

{% hint style="info" %}
**Disclaimer:** These recommendations reflect general industry experience. Airline risk controls and issuer policies may affect results.
{% endhint %}

#### Payment failure recovery

**What happens**

The order changes to `Cancel` when payment fails due to airline risk controls, insufficient funds, or a price above the limit.

**Option 1: API**

{% stepper %}
{% step %}

### Regenerate the order

Call `regenerateOrder.do`:

```json
{
  "originalOrderNo": "{original order no}"
}
```

{% endstep %}

{% step %}

### Choose a new payment method

Call `pay.do`. You can use another card or your account balance:

```json
{
  "orderNo": "{new order no}",
  "supportCreditTransPayment": null, // no need
  "creditCard": null 
}
```

{% endstep %}
{% endstepper %}

**Option 2: ATrip**

{% stepper %}
{% step %}

### Sign in to ATrip

Open **My Bookings**, find the affected order, then select **Regenerate** to get a new order number.

![](https://content.gitbook.com/content/UcaRG2qIaBgtVwgrBEGX/blobs/FJppR8g9Y6wY58xm6YST/attachments/a138dc38-e8a0-42c7-8559-c776cca13e1e.png)

![](https://content.gitbook.com/content/UcaRG2qIaBgtVwgrBEGX/blobs/qxyurhRhTG9rys48BAV8/attachments/43afa425-ea9d-4a5d-a6dc-1d2b323d7e16.png)
{% endstep %}

{% step %}

### Pay by balance

Open the new order and select **Pay**. The system charges your account balance automatically.

![](https://content.gitbook.com/content/UcaRG2qIaBgtVwgrBEGX/blobs/PgxZIHTBItlM2iHaG0oe/attachments/554f4cf9-173c-4d85-86e2-cba558a9aa76.png)
{% endstep %}
{% endstepper %}

### FAQ

<details>

<summary>Can the quoted price differ from the final ticketing price?</summary>

Yes. The agent bears any difference. Check profit and loss data in **Dashboard → Price Change**.

</details>

<details>

<summary>Which airlines support VCC payment?</summary>

In **Airline List**, filter airlines where **Payment Method** is **VCC**.

</details>

<details>

<summary>Where can I see the amount charged by the airline?</summary>

Check the VCC statement. After ticketing succeeds, the Order Details response also returns the actual amount.

</details>

<details>

<summary>What is Atlas's role in VCC payment?</summary>

Atlas provides automated ticketing as a technical service provider. The agent is the actual ticket issuer.

</details>

<details>

<summary>Why can a VCC work on an airline website but fail through Atlas?</summary>

Airline risk controls can block the charge. High-value or high-frequency transactions may trigger those controls.

</details>

### VCC Pass-through failure support

{% hint style="warning" %}
**Complete a manual test payment before requesting support.**
{% endhint %}

{% stepper %}
{% step %}

### Test the payment manually

Ask the customer to try payment with the VCC on the airline website.
{% endstep %}

{% step %}

### Confirm the result

**Payment fails:** The airline likely blocked the payment under its risk controls. Use a different VCC.

**Payment succeeds:** Submit a ticket to Atlas with:

* A screenshot of the successful payment.
* The VCC provider name.
* The VCC BIN, which is the first six card digits.
  {% endstep %}

{% step %}

### Atlas investigation

Atlas investigates the issue and supports the payment flow.
{% endstep %}
{% endstepper %}

These steps help Atlas investigate VCC Pass-through transaction failures.

### Appendix: VCC payment validation

| **Field**    | **Validation**                                                                                                                                                                                                             |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| cardNo       | <p>The card number must contain 13–19 digits.<br>The number must pass Luhn validation.<br>The system blocks a card after more than five failed attempts within 30 minutes. That card remains unavailable for 24 hours.</p> |
| cardExpire   | <p><code>cardExpireMonth</code> must be a number from 1 to 12.<br><code>cardExpireYear</code> must contain two or four digits.<br>The expiry date must be the current month or later.</p>                                  |
| cardCVV      | `cardCVV` must contain three or four digits.                                                                                                                                                                               |
| cardHoldName | `cardHolderLastName` and `cardHolderFirstName` may contain only A–Z, a–z, `-`, À–Ö, Ø–ö, and ø–ÿ.                                                                                                                          |

All card address fields are required.

| **Field**          | **Validation**                                                                                                                            |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| cardHolderCountry  | Must contain two letters and meet ISO 3166.                                                                                               |
| cardHolderProvince | The state/province of the billing address associated with the card. Only use tow-letter code, for example, use "CA" and not "California". |
| cardHolderCity     | Cannot contain only digits.                                                                                                               |
| cardHolderPostCode | May contain only letters and digits. Length must exceed four characters.                                                                  |
| cardHolderAddress  | Must contain more than six characters.                                                                                                    |
