Specifying Payment Types

payment-options

Once you've set up your URL template, you can add payments to your slots by completing the following steps.

  1. Identify Paid Slots
  2. Set Slot Prices
    • Set No Show or Cancellation Fees
    • Set Deposits
    • Set Prepayments
    • Set Credit Card Require

1. Identify Paid Slots

You can define your pricing using the Services Feed or Availability Feed. By defining the price at the service level, you're setting all the availability slots within that service or dining room to a fix price. Whereas, defining the price at the availability you're setting the price for a specific slot. For example, the following situations could be handled by setting prices or fees at the availability level:

  • Prices are reduced on Tuesdays and increased on Saturdays.
  • No show fees apply to availability between 5:00 PM and 7:00 PM.
  • Require deposits for party sizes greater than 6.
  • Bookings in a certain room require a credit card.

2. Set Slot Prices

Prepayment

This configuration is used to specify that the amount for the service must be paid in full at the time of booking. Prepayment is specified on the availability level through the payment field of the Avaibility feed.

Prepayment Sample

{
  "availability": [{
    "merchant_id": "dining-A",
    "service_id": "reservation",
    "start_sec": 1535853600,
    "duration_sec": 2700,
    "spots_total": 2,
    "spots_open": 2,
    "resources": {
    "room_id": "A-dining-room",
    "room_name": "Wine Tasting Room",
    "party_size": 2,
    "prepayment": {
      "price_info": {
        "price": {
          "price_micros": 200000000,
          "currency_code": "USD",
          },
        "price_type": "PER_PERSON"
        }
      }
    }
  }]
}

Availability Feed

message Availability {
  ...
  // Optional prepayment information for this availability. Prepayment is only
  // available through the Payment Redirect Add-on
  Prepayment prepayment = 20;
}

Prepayment Definition

// A payment the user may be charged as part of their reservation.
message Prepayment {
  PriceInfo price_info = 1;
}

No-show Fee

No-show fees can be charged to a user if they don't attend their reservation, or if they cancel after the cancellation window. If no cancellation window is specified, it will default to the start time of the slot.

To specify a no show fee, in the service feed, you should include the no_show_fee field as shown in the following example:

No Show Fee Sample

Description:
In the example, the partner or the merchant is authorized to charge a fixed rate charge of $25 as specified in the `no_show_fee.fee.price_micros` field if the appointment holder does not attend the appointment. This fee may also be charged if the user cancels within the 4 hours (14400 seconds) before the appointment, as specified in the `scheduling_rules.min_advance_online_canceling` field.
{
  "merchant_id": "merchant-1",
  "service_id": "service-2-b",
  "name": "Reservation",
  "description": "A dining reservation",
  "price": {
    "price_micros": 200000000,
    "currency_code": "USD"
  },
  "scheduling_rules": {
    "min_advance_online_canceling": 14400,
  },
  "no_show_fee": {
    "fee": {
      "price_micros": 25000000,
      "currency_code": "USD"
    },
    "fee_type": "FIXED_RATE_DEFAULT"
  }
}

Service Feed

message Service {
  ...
  // Defines a no show fee that may be charged to the user. Can be overridden
  // at the availability level. (optional)
  NoShowFee no_show_fee = 12;
}

Availability Feed

message Availability {
  ...
  // Defines a no show fee that may be charged to the user. Overrides the
  // service no show fee if one was specified. Setting this to an empty
  // NoShowFee message removes any service-level no show fee. (optional)
  NoShowFee no_show_fee = 13;
}

No Show Fee Definition

// A fee that a user may be charged if they have made a booking but do not
// show up.
message NoShowFee {
  // The amount the user may be charged if they do not show up for their
  // reservation.
  Price fee = 1;

  // Defines how the fee is determined from the availability.
  PriceType fee_type = 3;
}

Deposit

Deposits are used to collect an initial charge as a requirement for a booking. Deposits can be charged at the time of booking or at a later time. You may will need to define under which terms a deposit is refundable as well as when a booking can be cancelled online.

To specify a deposit, in the service feed, you should include the deposit field as shown in the following example:

Deposit Sample

Description:
The `min_advance_online_canceling` `deposit.min_advance_cancellation_sec`defines when the deposit is refundable. Note that in the example a deposit can specify a cancellation time separately from the refund terms. In this case, a user will be able to cancel the service online up to 24 hours in advance (86400 seconds). This ensures that the merchant is directly informed of any late cancellations. However, the user may still be eligible for a refund on their deposit up until 4 hours in advance (14400 seconds) before the booking (by contacting you or the merchant for cancellation), which will be shown in the terms at checkout and in the confirmation email.
{
  "merchant_id": "merchant-1",
  "service_id": "service-2-b",
  "name": "Reservation",
  "description": "A dining reservation",
  "price": {
    "price_micros": 200000000,
    "currency_code": "USD"
  },
  "scheduling_rules": {
    "min_advance_online_canceling": 86400,
  },
  "deposit": {
    "deposit": {
      "price_micros": 25000000,
      "currency_code": "USD",
      "min_advance_cancellation_sec": 14400,
    },
    "deposit_type": "FIXED_RATE_DEFAULT"
  }
}

Service Feed

message Service {
  ...
  // Defines how a deposit may be charged to the user. Can be overridden at the
  // availability level. (optional)
  Deposit deposit = 11;
}

Availability Feed

message Availability {
  ...
  // Defines how a deposit may be charged to the user. Overrides the service
  // deposit if one was specified. Setting this to an empty Deposit message
  // removes any service-level deposit. (optional)
  Deposit deposit = 12;
}

Deposit Definition

// A deposit that the user may be charged or have a hold on their credit card
// for.
message Deposit {
  // Deposit amount.
  Price deposit = 1;

  // Minimum advance cancellation for the deposit.
  int64 min_advance_cancellation_sec = 2;

  // Defines how the deposit is determined from the availability.
  PriceType deposit_type = 3;
}

Require Credit Card

A service may require a credit card as an additional way to verify identity. However, it shouldn't be used for prepayment, deposits, or no show fees. If those use cases are required, they should be configured explicitly. Requiring a credit card will often lead to a significant drop in bookings for this service.

To require that a credit card be provided during checkout you must set the field require_credit_card to REQUIRE_CREDIT_CARD_ALWAYS.

Credit Card Required Sample

{
  "merchant_id": "merchant-1",
  "service_id": "reservation",
  "name": "reservation",
  "description": "Food reservation",
  "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
}

Service Feed

message Service {
  ...
  // Indicates whether the user must provide a credit card in order to book this
  // service.
  // This value can be overridden at the availability level. (optional)
  RequireCreditCard require_credit_card = 13;
}

Availability Feed

message Availability {
  ...
  // Indicates whether the user must provide a credit card in order to book this
  // availability slot.
  // If the value is not set, it is inherited from the service level if it's set
  // there. (optional)
  RequireCreditCard require_credit_card = 14;
}

Require Credit Card Definition

// Defines whether a credit card is required in order to book an appointment.
enum RequireCreditCard {
  // The credit card requirement is not explicitly specified and the
  // behaviour is identical to the one specified for CONDITIONAL.
  REQUIRE_CREDIT_CARD_UNSPECIFIED = 0;

  // Google will require a credit card for the booking if any of the following
  // conditions are met:
  // * the availability has a price and the prepayment_type is REQUIRED
  // * the no_show_fee is set
  // * the deposit field is set.
  REQUIRE_CREDIT_CARD_CONDITIONAL = 1;

  // A credit card is always required in order to book this availability
  // regardless of other field values.
  REQUIRE_CREDIT_CARD_ALWAYS = 2;
}

Additional Definitions

Price Range Definition

// Wrapper for a range of monetary amount treated as unbounded unless both
// values are set. At least one of min_amount and max_amount is required.
message PriceRange {
  // Minimum amount.
  Price min_price = 1;

  // Maximum amount. Should always be > min_price.
  Price max_price = 2;
}

Price Info Definition

// Container for price details.
message PriceInfo {
  oneof price_options {
    Price price = 1;

    // The upper and/or lower bound
    PriceRange price_range =
        ;
  }

  // Defines how price or price range is applied (per person or fixed)
  PriceType price_type = 3;
}

Price Type Definition

// Defines how a total price is determined from an availability.
enum PriceType {
  // The price is for a fixed amount. This is the default value if the field is
  // not set.
  //
  // Examples:
  //   $50 deposit to reserve a table; $20 no show fee for a yoga class
  FIXED_RATE_DEFAULT = 0;

  // The price specified is per person, and the total price is calculated
  // according to the party size specified in Resources as price_micros *
  // party_size. A PER_PERSON price must be accompanied by a party size in the
  // availability resources. If it is not, a party size of one is used.
  //
  // Examples:
  //   $10 each for tickets to a museum
  PER_PERSON = 1;
}