Offer Overview

Offers allow you to create price variations and payment method combinations for your products. Here are examples:

Product A (R$ 1,000.00)

  • Offer 1: Price: R$ 1,000.00 (0% discount)
  • Offer 2: Price: R$ 900.00 (10% discount)

Product B - Different Payment Methods

  • Offer 1: Boleto, PIX, and Installment Boleto
  • Offer 2: Installment Boleto and Smart Payment (financed credit card)

Each offer has its own payment options, determined by the payment_configurations associated with the offer. Certain fields in these configurations have restrictions, which can be found in the Payment Configurations section.

Offer Schema

FieldDescriptionType
idUnique identifier (UUID)String
nameThe name of the offerString
amount_centsOffer price in centsInteger
amount_currencyCurrency code for the offer amount (e.g., BRL for Brazilian Real)String
availabilityOffer availability status. Can be enabled, disabled or expiredString
urlDirect URL to access this offer’s checkout pageString
smart_payment_enabledWhether smart payment (automatic payment method selection) is enabled for this offerBoolean
checkout_typeType of checkout flow. Can be default (standard checkout) or without_address (no address collection)String
expires_atDate and time after which the offer stops selling, or null when it never expiresString
seatsNumber of sales the offer accepts before it stops selling, or null when it is unlimitedInteger
exclude_from_campaignWhether the offer is kept out of every campaign, selling at its own values. See campaignsBoolean
created_atIndicates when the record was created in ISO8601 formatString
updated_atIndicates when the record was last updated in ISO8601 formatString
productProduct object containing product detailsObject
payment_configurationsArray of payment configuration objects available for this offerArray

Automatic Expiration

An offer can close itself, so you do not have to disable it by hand. Both limits are optional and default to null, which means the offer keeps selling until you disable it.

FieldDescriptionType
expires_atDate and time, in ISO8601, after which the offer stops selling. Must be in the futureString
seatsNumber of sales the offer accepts before it stops selling. Must be greater than 0Integer

Both are set when creating or updating an offer. Once either limit is reached:

  • new orders for the offer are refused;
  • a daily routine moves the offer’s availability to expired, and disables the sales funnels that use it.

Seats count completed sales, so an abandoned checkout never consumes one.

Because the routine runs once a day, an offer may still read availability: enabled for a few hours after reaching a limit — it stops accepting orders straight away either way.

An offer whose availability is expired cannot be enabled again. Create a new offer instead.

Campaigns

A campaign is a sale: while it runs, it overrides values on the offers taking part — the amount, the take rate and the fees. Where the campaign is attached decides which offers take part:

  • a campaign attached to the company applies to every offer of that company;
  • a campaign attached to a product applies to every offer of that product.

Offers take part by default, the ones you create through the API included. exclude_from_campaign is what keeps an offer out: an offer created or updated with exclude_from_campaign: true never takes part in a campaign, whatever the campaign’s scope, and keeps selling at its own amount, take rate and fees for as long as the sale runs.

FieldDescriptionType
exclude_from_campaignKeeps the offer out of every campaign. Defaults to false, so the offer takes partBoolean

Campaigns are still rolling out. exclude_from_campaign is documented ahead of the feature so you can plan your integration — until campaigns are released the field is ignored, so sending it changes nothing and fails nothing.

Checkout Type Values

ValueDescription
defaultStandard checkout flow that collects customer address information
without_addressSimplified checkout flow that does not collect customer address information