> ## Documentation Index
> Fetch the complete documentation index at: https://docs.d-edge.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> This site documents the D-EDGE APIs for technology partners (web agencies, OTAs, PMS and RMS vendors, booking and CRM tools). It is written for developers integrating with hotels that use the D-EDGE platform.
> Seven APIs, grouped by domain. Connectivity: Channel Manager API (distribute a hotel's inventory to your channel and send bookings back). Pricing & Availability: Best Price API (best offers to highlight), Quotation API (all bookable offers for a stay), Daily Rates API (daily availability between two dates). Booking: Booking Engine API (a hotel's full direct booking funnel), Gift Shop API (gift vouchers from catalogue to payment). Guest Management: CRM API (guest profiles).
> Pick the API by the need: to display prices, use the Best Price API or the Daily Rates API; to quote a specific stay, use the Quotation API; to book, use the Booking Engine API; to sell gift vouchers, use the Gift Shop API; to manage guest profiles, use the CRM API; to receive hotel inventory and send bookings back as a distribution channel, use the Channel Manager API.
> Base URLs, hotel identifiers, and credentials are delivered by the D-EDGE partnership team during onboarding. Do not invent base URLs, endpoints, parameters, or example credentials that do not appear on these pages.
> Authentication differs per API: OAuth 1.0 for Best Price, Quotation, Daily Rates, and Booking Engine; an X-API-KEY header for Gift Shop; OAuth 2.0 client credentials for CRM; partner-defined credentials carried in the XML message for the Channel Manager API. Read each API's Authentication page before writing code.
> A mock environment returns realistic but fictitious data without credentials. The Postman and Insomnia collections on the API collections page target it by default. Use it for exploration and tests, never for production traffic.
> Use the official names exactly: D-EDGE, D-EDGE platform, Channel Manager API, partnership team. Do not use Back Office or Extranet.
> Each API has a Changelog page. Check it for the current behaviour before relying on an older answer. For questions these pages do not answer, direct the reader to the Contact us page.

# Push bookings

> You push each confirmed booking to D-EDGE

> [!NOTE]
>
> Your system sends HTTP `POST` requests to a URL given by the D-EDGE team, authenticated with [Basic Auth credentials issued by D-EDGE](/channel-manager-api/build/guidelines/authentication.md). The hosting model is described in [the introduction](/channel-manager-api/get-started/introduction.md#an-api-that-runs-on-your-endpoints).

Push bookings is the push half of the booking flow: as soon as a booking is confirmed, modified, or cancelled on your platform, your system sends it to the D-EDGE endpoint. It works together with [Get bookings](/channel-manager-api/build/reference/get-bookings.md), and both are required. D-EDGE recognises a booking it already holds, so the two channels never duplicate.

## The request you send

Send an HTTP `POST` with `Content-Type: application/xml`, the credentials in the `Authorization` header, and the XML as the raw body. Allow an HTTP timeout of up to 60 seconds.

The body has the shape of a [Get bookings](/channel-manager-api/build/reference/get-bookings.md) response: a `<message>` opening with an empty `<success/>` element, then one [booking message](/channel-manager-api/build/reference/booking-message.md) in a `<bookings>` element. The `<success/>` is required even though your call answers nothing. The examples follow one booking through its three actions, then show a booking carrying most optional elements of the [booking message](/channel-manager-api/build/reference/booking-message.md).

```xml Create theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <success/>
  <bookings hotelId="1234">
    <booking id="EOCFGA" action="Create" currency="EUR"
             date="2027-04-20T20:03:25" totalAmount="397.00"
             paidAmount="0.00" dueAmount="397.00" payableAmount="0.00"
             paxCount="2">
      <customer firstName="Alain" lastName="Dupont">
        <contact email="alain.dupont@example.com" />
      </customer>
      <rooms>
        <room id="CLA">
          <stays>
            <stay date="2027-10-02" quantity="1" unitPrice="198.50" rateCode="BAR" />
            <stay date="2027-10-03" quantity="1" unitPrice="198.50" rateCode="BAR" />
          </stays>
          <guests>
            <guest firstName="Alain" lastName="Dupont" ageRange="10" />
            <guest firstName="Marie" lastName="Dupont" title="Mrs" ageRange="10" />
          </guests>
        </room>
      </rooms>
    </booking>
  </bookings>
</message>
```

```xml Modify theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <success/>
  <bookings hotelId="1234">
    <booking id="EOCFGA" action="Modify" currency="EUR"
             date="2027-04-21T09:12:40" totalAmount="595.50"
             paidAmount="0.00" dueAmount="595.50" payableAmount="0.00"
             paxCount="2">
      <customer firstName="Alain" lastName="Dupont">
        <contact email="alain.dupont@example.com" />
      </customer>
      <rooms>
        <room id="CLA">
          <stays>
            <stay date="2027-10-02" quantity="1" unitPrice="198.50" rateCode="BAR" />
            <stay date="2027-10-03" quantity="1" unitPrice="198.50" rateCode="BAR" />
            <stay date="2027-10-04" quantity="1" unitPrice="198.50" rateCode="BAR" />
          </stays>
          <guests>
            <guest firstName="Alain" lastName="Dupont" ageRange="10" />
            <guest firstName="Marie" lastName="Dupont" title="Mrs" ageRange="10" />
          </guests>
        </room>
      </rooms>
    </booking>
  </bookings>
</message>
```

```xml Cancel theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <success/>
  <bookings hotelId="1234">
    <booking id="EOCFGA" action="Cancel" currency="EUR"
             date="2027-04-22T16:40:05" totalAmount="595.50"
             paidAmount="0.00" dueAmount="595.50" payableAmount="0.00"
             paxCount="2">
      <customer />
    </booking>
  </bookings>
</message>
```

```xml Full booking theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <success/>
  <bookings hotelId="1234">
    <booking id="EOC4440" action="Create" currency="EUR"
             date="2027-04-14T10:03:25" totalAmount="397.00" paidAmount="397.00"
             dueAmount="0.00" payableAmount="397.00" origin="MySite.com"
             paxCount="3" adultCount="2" childCount="1" infantCount="0"
             commissionType="percent" commissionValue="10.00" sellType="gross"
             dayUse="false" arrivalTime="15:00Z" departureTime="11:00Z">
      <customer firstName="Alain" lastName="Dupont" title="Mr">
        <contact email="alain.dupont@example.com" phone="0620304050">
          <address city="Paris" country="FR" postalCode="75002">
            <![CDATA[24 rue du sentier]]>
          </address>
        </contact>
        <creditCard number="4111111111111111" cardHolder="Alain Dupont"
                    expiryDate="2028-03" cardType="Visa" />
        <comment><![CDATA[Quiet room, please.]]></comment>
      </customer>
      <travelAgent name="My Travel Agency" id="IATA12456">
        <contact email="agency@example.com" phone="+33120304050" />
      </travelAgent>
      <distributor>
        <comment name="Cancel Policy">
          <![CDATA[In the event of a no-show, the first night is charged.]]>
        </comment>
        <comment name="Guaranty"><![CDATA[Credit card guarantee]]></comment>
      </distributor>
      <rooms>
        <room id="CLA">
          <stays>
            <stay date="2027-10-02" quantity="1" unitPrice="62.50" rateCode="BAR" />
            <stay date="2027-10-03" quantity="1" unitPrice="63.00" rateCode="NR" />
            <stay date="2027-10-04" quantity="1" unitPrice="60.00" rateCode="BAR" />
          </stays>
          <guests>
            <guest firstName="Alain" lastName="Dupont" title="Mr" ageRange="10" />
          </guests>
        </room>
        <room id="SUP">
          <stays>
            <stay date="2027-10-02" quantity="1" unitPrice="70.50" rateCode="BAR" />
            <stay date="2027-10-03" quantity="1" unitPrice="70.50" rateCode="BAR" />
            <stay date="2027-10-04" quantity="1" unitPrice="70.50" rateCode="BAR" />
          </stays>
          <guests>
            <guest firstName="Helene" lastName="Dupont" title="Mrs" ageRange="10" />
            <guest firstName="Lea" lastName="Dupont" title="Miss"
                   ageRange="8" birthDate="2019-02-05" />
          </guests>
        </room>
      </rooms>
    </booking>
  </bookings>
</message>
```

## The response D-EDGE returns

The usual [envelope](/channel-manager-api/build/guidelines/responses.md): a `<success>`, a `<failure>`, or a `<warning>`.

On an unexpected D-EDGE error, the body may be plain text rather than the XML envelope. Treat any response you cannot parse as XML like a `203` `InternalError`: keep the booking on your side, retry later, and [contact us](/overview/resources/contact-us.md) if it persists.

```xml Success theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <success />
</message>
```

```xml Warning theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <warning type="204" message="ExtraIntegrationError">
    <comment><![CDATA[unitPrice is mandatory, failed to integrate the extras]]></comment>
  </warning>
</message>
```

```xml Failure theme={null}
<?xml version="1.0" encoding="utf-8"?>
<message>
  <failure type="201" message="DomInvalidXML">
    <comment><![CDATA[DOM validation parsing error]]></comment>
  </failure>
</message>
```

> [!WARNING]
>
> A `<success>` means the booking **was read**, not that it is integrated. Integration is asynchronous, and the definitive signal is the [Confirm bookings](/channel-manager-api/build/reference/confirm-bookings.md) message that follows. A booking pushed for an unknown hotel is refused with a `<failure>` (`HotelNotLinked`). A booking for an unknown room, or dated in the past, does not raise an error at push time. The other failures come from invalid XML, amounts that do not add up, or a processing error on the D-EDGE side, with the codes listed in [Responses](/channel-manager-api/build/guidelines/responses.md#error-codes-d-edge-returns).

## Retries

If you implement an automatic retry when no confirmation arrives, wait **15 minutes** before pushing the same booking again. The push URL and its credentials are issued in the [second certification phase](/channel-manager-api/get-certified/certification-steps.md#phase-two-live-certification) and stay stable from then through production.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.