Search in documentation
ctrl+4K
Modules
Authentication
Merchant
Catalog
Order
Events
Logistics
Shipping
Review
Financial
Solutions

How it works

Integrate the Merchant module and manage your stores in real time.
Discover which stores you can manage:
  • GET /merchants — Lists all stores linked to your token
  • GET /merchants/{merchantId} — Gets complete details of a store
Check operational status in real time:
  • GET /merchants/{merchantId}/status — Queries store availability
Possible states:
  • OK — Ready to receive orders
  • WARNING — Online with restrictions
  • CLOSED — Closed (expected, outside operating hours)
  • ERROR — Problem to investigate
Configure operating hours and temporary pauses:Operating hours:
  • PUT /merchants/{merchantId}/opening-hours — Sets weekly hours
  • GET /merchants/{merchantId}/opening-hours — Queries hours
Interruptions (temporary pauses):
  • POST /merchants/{merchantId}/interruptions — Creates pause
  • GET /merchants/{merchantId}/interruptions — Lists pauses
  • DELETE /merchants/{merchantId}/interruptions/{interruptionId} — Removes pause
Generate QR codes for delivery driver check-in:
  • POST /merchants/checkin-qrcode — Generate PDF with QR codes for printing
Typical monitoring flow:
  1. List all stores linked to your token
  2. Every 30 seconds: Query status of each store
  3. If status = ERROR: Investigate specific validations
  4. If needed to pause: Create interruption
  5. For Groceries stores: Generate and maintain printed QR codes
Retrieve information about the stores associated with your access token. Use these endpoints to discover which stores you can manage and get details about each one.
List all stores linked to your token:
curl --location 'https://merchant-api.ifood.com.br/merchant/v1.0/merchants' \
  --header 'Authorization: Bearer TOKEN'
Query parameters (optional):
  • page - Page number (starting at 1)
  • size - Number of stores per page (default: 100)
Response 200:
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Pizzaria Central",
    "corporateName": "Pizzaria Central LTDA"
  },
  {
    "id": "550e8400-e29b-41d4-a716-446655440001",
    "name": "Burger King #42",
    "corporateName": "Restaurant Brands International Brazil"
  }
]
Returned fields:
FieldTypeDescription
iduuidUnique identifier
namestringName displayed in app
corporateNamestringLegal name
Error codes:
HTTPCodeDescription
401UnauthorizedInvalid or expired access token
500InternalServerErrorError fetching store list
AuthenticationUse the Bearer token provided during onboarding. The token determines which stores you can access via API.
Get complete information about a store:
curl --location 'https://merchant-api.ifood.com.br/merchant/v1.0/merchants/550e8400-e29b-41d4-a716-446655440000' \
  --header 'Authorization: Bearer TOKEN'
Response 200:
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Pizzaria Central",
  "corporateName": "Pizzaria Central LTDA",
  "description": "Specializes in Neapolitan pizza",
  "averageTicket": 85.50,
  "exclusive": false,
  "type": "RESTAURANT",
  "status": "AVAILABLE",
  "createdAt": "2024-01-15T10:30:00",
  "address": {
    "street": "Rua das Flores",
    "number": "123",
    "city": "São Paulo",
    "state": "SP",
    "postalCode": "01310-100",
    "country": "BR",
    "district": "Centro",
    "latitude": -23.5505,
    "longitude": -46.6333
  },
  "operations": {
    "name": "delivery",
    "salesChannel": {
      "name": "ifood-app",
      "enabled": true
    }
  }
}
Returned fields:
FieldTypeDescription
iduuidUnique store identifier
namestringName displayed to customers
corporateNamestringLegal/corporate name
descriptionstringStore description
averageTicketnumberAverage ticket value
exclusivebooleanWhether store is exclusive
typestringType: RESTAURANT, STORE, GROUP
statusstringStatus: AVAILABLE, UNAVAILABLE, DISABLED
createdAtstringCreation date (ISO 8601)
address.streetstringStreet name
address.numberstringAddress number
address.citystringCity
address.statestringState
address.postalCodestringZIP code
address.countrystringCountry
address.districtstringDistrict
address.latitudenumberLatitude
address.longitudenumberLongitude
operations.namestringOperation type: delivery, indoor
operations.salesChannelobjectSales channel: ifood-app, etc
Error codes:
HTTPCodeDescriptionSolution
401UnauthorizedInvalid or expired tokenVerify token is correct
403ForbiddenNo permission to access this storeToken not linked to this store
500InternalServerErrorError fetching store detailsTry again or contact support
Next step: Check availabilityAfter getting store details, use the Status API to check in real time if the store can receive orders.
The store receives orders when:
  1. Within opening hours
  2. Has a catalog with at least one menu enabled
  3. Has a delivery area configured
  4. Has no active interruptions
  5. Receives polling every 30 seconds
Use the Status API to check if a store can receive orders.Possible states:
StateColorDescriptionRequired action
OKGreenStore onlineNone
WARNINGYellowOnline with restrictions (e.g., reduced area)None
CLOSEDGrayClosed as expected (outside opening hours)None
ERRORRedClosed unexpectedlyCheck
Always returned validations:
  • is-connected: Polling every 30 seconds
  • opening-hours: Within opening hours
Validations in ERROR or WARNING:
ValidationDescription
unavailabilitiesActive interruption
radius-restrictionNo delivery drivers available in the area
payout-blockedFinancial pending issues
logistics-blockedLogistics problems (festivals, traffic)
terms-service-violationTerms of Service violation
status-availabilityStore disabled or in testing
Questions? Open a ticket on the Partner Portal.Applied when the store violates the Terms of Service.Types of penalties:
  • Automatic: Do not allow immediate reopening (e.g., many cancellations). Wait for the penalty to end.
  • Manual: Can be removed by the store (e.g., interruptions created by the store).
The reopenable object indicates if reopening is possible:
FieldDescription
reopenabletrue or false
typeType of closure (e.g., UNAVAILABILITY)
identifierID for reopening (when applicable)
Response example:
{
  "reopenable": {
    "identifier": "cca57aab-5ac0-4af4-a04d-48261350bebc",
    "type": "UNAVAILABILITY",
    "reopenable": true
  }
}
When reopenable: true, use the Interruptions API to remove the pause.When reopenable: false, check the message field in the Status API for more details.
Use GET /interruptions to list active and future interruptions.Use POST /interruptions to create an interruption.Date format: ISO 8601Response: Object with ID, description, start, and end in extended ISO 8601 format.
Time zoneInterruptions use the store's configured time zone. Any timezone in the payload is ignored.
Asynchronous processingClosure takes a few seconds to become effective. Continue polling for a few minutes to avoid losing orders during this interval.
Use DELETE /interruptions/{id} with the merchant and interruption ID.
Configure store opening hours via Opening Hours API.
API scopeThis API manages only the standard iFood Marketplace hours. For new businesses or digital catalogs, use the Partner Portal.
Use GET /opening-hours to query configured hours.Use PUT /opening-hours to set hours.
Temporary closuresFor temporary pauses, use the Interruptions API instead of changing opening hours.
Complete replacement behaviorThis endpoint replaces all hours:
  • Days not sent are closed
  • Example: Sending only Monday closes all other days
  • Multiple shifts allowed but cannot overlap
  • Valid interval: 00:00 to 23:59
Partner Portal view:Corresponding payload:
{
  "storeId": "09e9a8c8-fda3-4991-acfc-43b15397caf6",
  "shifts": [
    {
      "dayOfWeek": "MONDAY",
      "start": "09:00:00",
      "duration": 360
    },
    {
      "dayOfWeek": "TUESDAY",
      "start": "09:00:00",
      "duration": 360
    },
    {
      "dayOfWeek": "WEDNESDAY",
      "start": "09:00:00",
      "duration": 360
    },
    {
      "dayOfWeek": "THURSDAY",
      "start": "09:00:00",
      "duration": 360
    },
    {
      "dayOfWeek": "FRIDAY",
      "start": "05:00:00",
      "duration": 420
    },
    {
      "dayOfWeek": "FRIDAY",
      "start": "13:00:00",
      "duration": 300
    },
    {
      "dayOfWeek": "FRIDAY",
      "start": "19:00:00",
      "duration": 210
    }
  ]
}
Drivers check in via QR code to collect orders.Use POST /merchants/checkin-qrcode to generate PDF with QR code.Limits:
  • Maximum: 20 stores per request
  • All stores must be linked to the access token
Result: PDF file ready for printing.
AvailabilityAvailable only for Groceries type stores.
After mastering store management, explore:
Questions or unresolved issues?
Was this page helpful?
Rate your experience in the new Developer portal: