---
title: UberEats Clone Features
description: 
url: https://miracuves.com/ubereats-clone/features
date_modified: 2026-09-10
author: miracuves
language: en_US
---

.mcv-uef{
    --crimson:#e8344f; --crimson-deep:#a70d2a; --crimson-hot:#d81b46; --crimson-light:#ff8090;
    --amber:#fbbf24; --black:#0a0a0a; --white:#ffffff; --paper:#faf8f8; --ink:#191419; --ink-dim:#6d666d;
    --line:rgba(11,11,16,0.1); --line-light:rgba(255,255,255,0.12);
    --card-bg:rgba(8,3,8,0.82);
    font-family:'Plus Jakarta Sans',Arial,sans-serif; color:var(--ink); background:var(--white); margin:0; padding:0;
  }
  .mcv-uef *{ box-sizing:border-box; }
  .mcv-uef h1,.mcv-uef h2,.mcv-uef h3{ font-family:'Plus Jakarta Sans',Arial,sans-serif; font-weight:800; margin:0; letter-spacing:-0.02em; line-height:1.12; }
  .mcv-uef p{ margin:0 0 14px; line-height:1.7; color:var(--ink); }
  .mcv-uef a{ color:var(--crimson-deep); text-decoration:none; }
  .mcv-uef .mono{ font-family:'JetBrains Mono',monospace; }
  .mcv-uef-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; position:relative; z-index:2; }
  .mcv-uef-bleed{ position:relative; left:50%; right:50%; margin-left:-50vw; margin-right:-50vw; width:100vw; }

  .mcv-seo-ref{ background:#FFF7E0; border:2px dashed #C79A00; padding:18px 22px; font-family:Arial,sans-serif; font-size:13px; color:#4A3B00; max-width:1180px; margin:18px auto; border-radius:8px; }

  .mcv-uef-crumb{ display:flex; gap:8px; align-items:center; font-family:'JetBrains Mono',monospace; font-size:11.5px; color:rgba(255,255,255,.62); margin-bottom:20px; }
  .mcv-uef-crumb a{ color:rgba(255,255,255,.62); }
  .mcv-uef-crumb a:hover{ color:var(--crimson-light); }
  .mcv-uef-crumb span.sep{ opacity:.5; }
  .mcv-uef-crumb span.cur{ color:rgba(255,255,255,.75); }

  .mcv-uef-eyebrow{ display:inline-flex; align-items:center; gap:8px; padding:7px 16px; border-radius:100px; background:rgba(255,255,255,.06); border:1px solid var(--line-light); font-family:'JetBrains Mono',monospace; font-size:11.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--crimson-light); margin-bottom:22px; }
  .mcv-uef-eyebrow .dot{ width:6px; height:6px; border-radius:50%; background:var(--crimson); }

  .mcv-uef-hero{ background:radial-gradient(ellipse 900px 500px at 85% -10%, rgba(232,52,79,.16), transparent), #0a0a0a; color:#fff; padding:56px 0 150px; position:relative; overflow:hidden; }
  .mcv-uef-hero .ring{ position:absolute; border:2px solid rgba(232,52,79,.18); border-radius:50%; pointer-events:none; }
  .mcv-uef-hero .ring1{ width:560px; height:560px; top:-260px; right:-200px; }
  .mcv-uef-hero .ring2{ width:340px; height:340px; bottom:-200px; right:120px; border-color:rgba(232,52,79,.1); }
  .mcv-uef-herogrid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:48px; align-items:center; }
  .mcv-uef-hero h1{ font-size:clamp(27px,3.9vw,44px); color:#fff; }
  .mcv-uef-hero h1 em{ font-style:normal; color:#ff8090; }
  .mcv-uef-hero p.sub{ font-size:16px; color:rgba(255,255,255,.68); max-width:600px; margin:20px 0 30px; }

  .mcv-uef a.mcv-uef-btn{ display:inline-flex; align-items:center; gap:8px; border-radius:12px; background:linear-gradient(160deg,#d81b46,#e6223f); color:#fff; font-weight:700; font-size:15px; padding:15px 28px; box-shadow:0 10px 30px rgba(232,52,79,.3); transition:transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s; }
  .mcv-uef a.mcv-uef-btn:hover{ color:#fff; transform:translateY(-2px); box-shadow:0 14px 36px rgba(232,52,79,.42); text-decoration:none; }
  .mcv-uef a.mcv-uef-btn-outline{ display:inline-flex; align-items:center; border:2px solid rgba(255,255,255,.7); color:#fff; border-radius:12px; font-weight:700; font-size:15px; padding:13px 26px; margin-left:12px; transition:all .2s; }
  .mcv-uef a.mcv-uef-btn-outline:hover{ background:#fff; color:#191419; text-decoration:none; }

  .mcv-uef-trust{ display:flex; flex-wrap:wrap; gap:22px; margin-top:34px; padding-top:24px; border-top:1px solid var(--line-light); }
  .mcv-uef-trust-item{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:rgba(255,255,255,.6); }
  .mcv-uef-trust-item strong{ font-family:'JetBrains Mono',monospace; color:#fff; font-size:14px; }

  .mcv-uef-cardstack{ position:relative; height:340px; }
  .mcv-uef-fincard{ position:absolute; width:300px; height:180px; border-radius:18px; padding:22px; background:linear-gradient(150deg,#1c1418,#0d0709); border:1px solid var(--line-light); box-shadow:0 30px 70px rgba(0,0,0,.5); }
  .mcv-uef-fincard.c1{ top:0; left:10px; z-index:1; opacity:.5; transform:rotate(-6deg) scale(.92); }
  .mcv-uef-fincard.c2{ top:30px; left:40px; z-index:2; background:linear-gradient(150deg,#3a0a15,#160408 60%,#0a0a0a); border-color:rgba(232,52,79,.3); box-shadow:0 40px 90px rgba(0,0,0,.55), 0 0 60px -12px rgba(232,52,79,.35); }
  .mcv-uef-fincard .brand{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.55); }
  .mcv-uef-fincard .chip{ width:34px; height:24px; border-radius:5px; background:linear-gradient(135deg,#ff8090,#e8344f); margin:22px 0 18px; }
  .mcv-uef-fincard .num{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; letter-spacing:.1em; }
  .mcv-uef-fincard .curr{ position:absolute; bottom:22px; right:22px; font-family:'JetBrains Mono',monospace; font-size:11px; color:#ff8090; }
  .mcv-uef-float{ position:absolute; background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:14px; padding:12px 16px; box-shadow:0 16px 40px rgba(0,0,0,.35); z-index:3; }
  .mcv-uef-float .k2{ font-family:'JetBrains Mono',monospace; font-size:10px; color:#ff8090; text-transform:uppercase; letter-spacing:.08em; margin-bottom:3px; }
  .mcv-uef-float .v{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; font-weight:700; }
  .mcv-uef-float-1{ top:-10px; right:0; }
  .mcv-uef-float-2{ bottom:10px; left:0; }

  .mcv-uef-statbar{ margin-top:-72px; position:relative; z-index:3; }
  .mcv-uef-statbar .inner{ background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:18px; box-shadow:0 24px 60px rgba(0,0,0,.35); padding:32px 20px; display:grid; grid-template-columns:repeat(4,1fr); }
  .mcv-uef-statbar .stat{ text-align:center; padding:0 12px; border-right:1px solid var(--line-light); }
  .mcv-uef-statbar .stat:last-child{ border-right:none; }
  .mcv-uef-statbar .num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:22px; color:#ff8090; }
  .mcv-uef-statbar .lbl{ font-size:11.5px; color:rgba(255,255,255,.62); margin-top:6px; line-height:1.4; }

  .mcv-uef-section{ padding:100px 0 76px; }
  .mcv-uef-section.paper{ background:#faf8f8; }
  .mcv-uef-section.tight{ padding-top:76px; }
  .mcv-uef-head{ text-align:center; max-width:720px; margin:0 auto 48px; }
  .mcv-uef-head .kicker{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:#a70d2a; margin-bottom:12px; }
  .mcv-uef-head h2{ font-size:clamp(22px,3vw,34px); color:#191419; }
  .mcv-uef-head p{ color:#6d666d; margin-top:14px; }

  .mcv-uef-rolegrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-uef-rolecard{ background:#fff; border:1px solid var(--line); border-radius:18px; padding:28px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-uef-rolecard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-uef-roleicon{ width:40px; height:40px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); display:flex; align-items:center; justify-content:center; margin-bottom:16px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; }
  .mcv-uef-rolecard h3{ font-size:17px; margin-bottom:12px; color:#191419; }
  .mcv-uef-rolecard ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-uef-rolecard li{ margin-bottom:8px; line-height:1.5; }

  .mcv-uef-tablewrap{ overflow-x:auto; border-radius:16px; box-shadow:0 12px 34px rgba(0,0,0,.07); border:1px solid var(--line); }
  table.mcv-uef-table{ border-collapse:collapse; width:100%; min-width:680px; background:#fff; font-size:13.5px; }
  table.mcv-uef-table th{ background:#0a0a0a; color:#ffffff; text-align:left; padding:14px 16px; font-family:'JetBrains Mono',monospace; font-weight:600; font-size:12px; letter-spacing:.04em; text-transform:uppercase; }
  table.mcv-uef-table td{ padding:14px 16px; border-bottom:1px solid rgba(11,11,16,0.1); vertical-align:top; color:#191419; }
  table.mcv-uef-table td.hl{ background:rgba(232,52,79,.06); border-top:3px solid #e8344f; font-weight:600; color:#191419; }
  table.mcv-uef-table th.hl{ background:#e6223f; color:#ffffff; }
  table.mcv-uef-table tbody tr:hover td{ background:#f4f1f1; color:#191419; }
  table.mcv-uef-table tbody tr:hover td.hl{ background:rgba(232,52,79,.13); color:#191419; }
  table.mcv-uef-table tr:last-child td{ border-bottom:none; }
  .mcv-uef-note{ font-size:12.5px; color:#6d666d; margin-top:12px; }

  .mcv-uef-callout{ background:linear-gradient(135deg,#2B0710,#4A0F1E); color:#fff; border-radius:20px; padding:40px 44px; }
  .mcv-uef-callout h2,.mcv-uef-callout h3{ color:#fff; font-size:22px; margin-bottom:12px; }
  .mcv-uef-callout p{ color:rgba(255,255,255,.78); font-size:14.5px; margin:0; }

  .mcv-uef-honest{ background:#fff; border:1px solid var(--line); border-left:4px solid #fbbf24; border-radius:14px; padding:28px 30px; }
  .mcv-uef-honest h3{ font-size:17px; margin-bottom:14px; color:#191419; }
  .mcv-uef-honestgrid{ display:grid; grid-template-columns:1fr 1fr; gap:10px 28px; }
  .mcv-uef-honestgrid div{ font-size:13.5px; color:#191419; line-height:1.55; padding-left:18px; position:relative; }
  .mcv-uef-honestgrid div::before{ content:'!'; position:absolute; left:0; top:0; font-family:'JetBrains Mono',monospace; font-weight:700; color:#8a6100; }

  .mcv-uef-cs{ background:#fff; border:1px solid var(--line); border-radius:20px; padding:32px 34px; display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; box-shadow:0 8px 24px rgba(0,0,0,.05); }
  .mcv-uef-cs-badge{ display:inline-flex; align-items:center; gap:7px; padding:6px 14px; border-radius:100px; background:rgba(232,52,79,.08); border:1px solid rgba(232,52,79,.25); font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#a70d2a; margin-bottom:12px; }
  .mcv-uef-cs-badge .dot{ width:6px; height:6px; border-radius:50%; background:#e8344f; }
  .mcv-uef-cs-body{ flex:1; min-width:260px; }
  .mcv-uef-cs-body h3{ font-size:16.5px; margin-bottom:6px; color:#191419; }
  .mcv-uef-cs-body p{ color:#6d666d; font-size:13.5px; margin:0; max-width:460px; }
  .mcv-uef a.mcv-uef-cs-link{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; color:#a70d2a; white-space:nowrap; }

  .mcv-uef-faqgrid{ display:grid; grid-template-columns:1fr 1fr; gap:0 40px; max-width:1000px; margin:0 auto; }
  .mcv-uef-faq details{ border-bottom:1px solid var(--line); padding:18px 0; }
  .mcv-uef-faq summary{ font-family:'Plus Jakarta Sans',Arial,sans-serif; font-weight:700; font-size:15px; color:#191419; cursor:pointer; list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px; }
  .mcv-uef-faq summary::-webkit-details-marker{ display:none; }
  .mcv-uef-faq summary::after{ content:'+'; font-family:'JetBrains Mono',monospace; color:#a70d2a; font-size:20px; font-weight:700; flex:none; }
  .mcv-uef-faq details[open] summary::after{ content:'\2212'; }
  .mcv-uef-faq .a{ color:#6d666d; font-size:13.5px; margin-top:10px; line-height:1.65; }

  .mcv-uef-cta{ background:linear-gradient(120deg,#e6223f,#6e0e1f); color:#fff; padding:64px 0; position:relative; overflow:hidden; }
  .mcv-uef-cta .ring{ position:absolute; border:2px solid rgba(255,255,255,.14); border-radius:50%; width:360px; height:360px; top:-140px; right:-100px; }
  .mcv-uef-cta .flex{ display:flex; justify-content:space-between; align-items:center; gap:28px; flex-wrap:wrap; position:relative; z-index:2; }
  .mcv-uef-cta h2{ color:#fff; font-size:clamp(20px,2.6vw,28px); margin-bottom:8px; }
  .mcv-uef-cta p{ color:#ffffff; margin:0; max-width:460px; }
  .mcv-uef-cta a.mcv-uef-btn-outline{ border-color:#fff; }
  .mcv-uef-cta a.mcv-uef-btn{ background:#fff; box-shadow:0 10px 30px rgba(0,0,0,.2); }
  .mcv-uef-cta a.mcv-uef-btn,.mcv-uef-cta a.mcv-uef-btn:hover{ color:#a70d2a; }

  .mcv-uef-explore{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
  .mcv-uef a.mcv-uef-pill{ font-family:'JetBrains Mono',monospace; font-size:12.5px; font-weight:600; padding:10px 18px; border-radius:100px; border:1px solid var(--line); color:#191419; background:#fff; transition:all .2s; }
  .mcv-uef a.mcv-uef-pill:hover{ border-color:#e8344f; color:#a70d2a; text-decoration:none; }
  .mcv-uef a.mcv-uef-pill.cur{ background:#191419; color:#fff; border-color:#191419; }

  .mcv-uef-finalcta{ background:#0a0a0a; color:#fff; text-align:center; padding:96px 24px 64px; position:relative; overflow:hidden; }
  .mcv-uef-finalcta .ring{ position:absolute; border:1.5px solid rgba(232,52,79,.16); border-radius:50%; }
  .mcv-uef-finalcta .ring1{ width:480px; height:480px; top:-220px; left:-160px; }
  .mcv-uef-finalcta .ring2{ width:300px; height:300px; bottom:-180px; right:-90px; }
  .mcv-uef-finalcta .card{ background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:24px; padding:56px 40px; max-width:720px; margin:0 auto; position:relative; z-index:2; }
  .mcv-uef-finalcta h2{ color:#fff; font-size:clamp(24px,3.2vw,34px); max-width:640px; margin:0 auto 14px; }
  .mcv-uef-finalcta p.sub{ color:rgba(255,255,255,.7); max-width:520px; margin:0 auto 30px; }
  .mcv-uef-footerbar{ max-width:1180px; margin:56px auto 0; padding-top:28px; border-top:1px solid var(--line-light); position:relative; z-index:2; }
  .mcv-uef-byline{ display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; font-family:'JetBrains Mono',monospace; font-size:11.5px; color:rgba(255,255,255,.55); border-bottom:1px solid rgba(255,255,255,.12); padding-bottom:16px; margin-bottom:12px; }
  .mcv-uef-byline strong{ color:#fff; font-weight:600; }
  .mcv-uef-byline .dotsep{ opacity:.4; }
  .mcv-uef-footermeta{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; font-family:'JetBrains Mono',monospace; font-size:11px; color:rgba(255,255,255,.55); }

  @media (max-width:900px){
    .mcv-uef-herogrid{ grid-template-columns:1fr; }
    .mcv-uef-statbar .inner{ grid-template-columns:repeat(2,1fr); gap:18px 0; }
    .mcv-uef-statbar .stat:nth-child(2){ border-right:none; }
    .mcv-uef-rolegrid{ grid-template-columns:1fr; }
    .mcv-uef-honestgrid{ grid-template-columns:1fr; }
    .mcv-uef-faqgrid{ grid-template-columns:1fr; }
    .mcv-uef-hero h1{ font-size:27px; }
    .mcv-uef-cta .flex{ flex-direction:column; align-items:flex-start; }
    .mcv-uef-cardstack{ height:260px; }
    .mcv-uef-fincard{ width:250px; height:150px; }
  }
  @media (prefers-reduced-motion: reduce){ .mcv-uef *{ animation:none !important; transition:none !important; } }
  /* --- components used by cost / company / business-model --- */
  .mcv-uef-pricecard{ background:linear-gradient(150deg,#3a0a15,#160408 60%,#0a0a0a); border:1px solid rgba(232,52,79,.3); border-radius:22px; padding:34px 32px; box-shadow:0 40px 90px rgba(0,0,0,.55), 0 0 60px -12px rgba(232,52,79,.35); }
  .mcv-uef-pricecard .plan{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:#ff8090; margin-bottom:14px; }
  .mcv-uef-pricecard .amt{ font-family:'JetBrains Mono',monospace; font-size:44px; font-weight:700; color:#fff; line-height:1; }
  .mcv-uef-pricecard .per{ font-size:13px; color:rgba(255,255,255,.6); margin-top:8px; }
  .mcv-uef-pricecard ul{ margin:22px 0 0; padding-left:18px; color:rgba(255,255,255,.78); font-size:13.5px; }
  .mcv-uef-pricecard li{ margin-bottom:8px; line-height:1.5; }
  .mcv-uef-drivers{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-uef-driver{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:26px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-uef-driver:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-uef-driver h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-uef-driver p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-uef-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
  .mcv-uef-step{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:16px; padding:24px 22px; }
  .mcv-uef-step .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:#a70d2a; margin-bottom:8px; }
  .mcv-uef-step h3{ font-size:15.5px; margin-bottom:8px; color:#191419; }
  .mcv-uef-step p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-uef-checkgrid{ display:grid; grid-template-columns:1fr 1fr; gap:16px 28px; }
  .mcv-uef-check{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:14px; padding:20px 22px; }
  .mcv-uef-check h3{ font-size:15px; margin-bottom:8px; color:#191419; }
  .mcv-uef-check p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-uef-flags{ display:grid; grid-template-columns:1fr 1fr; gap:14px 28px; }
  .mcv-uef-flag{ font-size:13.5px; color:#191419; line-height:1.55; padding-left:22px; position:relative; }
  .mcv-uef-flag::before{ content:'\2715'; position:absolute; left:0; top:0; font-family:'JetBrains Mono',monospace; font-weight:700; color:#a70d2a; }
  .mcv-uef-pt{ background:radial-gradient(ellipse 800px 400px at 20% 0%, rgba(232,52,79,.14), transparent), #0a0a0a; color:#fff; padding:92px 0 84px; }
  .mcv-uef-pt .mcv-uef-head h2{ color:#fff; }
  .mcv-uef-pt .mcv-uef-head p{ color:rgba(255,255,255,.68); }
  .mcv-uef-pt .mcv-uef-head .kicker{ color:#ff8090; }
  .mcv-uef-ptgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
  .mcv-uef-ptcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:18px; padding:26px 24px; }
  .mcv-uef-ptcard h3{ font-size:15.5px; color:#fff; margin-bottom:10px; }
  .mcv-uef-ptcard p{ font-size:13.5px; color:rgba(255,255,255,.72); margin:0; }
  .mcv-uef-ptcard .tag{ display:inline-block; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; border:1px solid rgba(232,52,79,.35); border-radius:100px; padding:3px 10px; margin-bottom:12px; }
  .mcv-uef-csbox{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:22px; padding:40px 42px; box-shadow:0 12px 34px rgba(0,0,0,.06); }
  .mcv-uef-csmeta{ display:flex; flex-wrap:wrap; gap:26px; margin:22px 0 26px; padding:20px 0; border-top:1px solid rgba(11,11,16,0.1); border-bottom:1px solid rgba(11,11,16,0.1); }
  .mcv-uef-csmeta div{ font-size:13px; color:#6d666d; }
  .mcv-uef-csmeta strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:18px; color:#191419; margin-bottom:2px; }
  .mcv-uef-cscols{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
  .mcv-uef-cscols h4{ font-size:13px; font-family:'JetBrains Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#a70d2a; margin:0 0 10px; }
  .mcv-uef-cscols ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-uef-cscols li{ margin-bottom:8px; line-height:1.5; }
  .mcv-uef-quote{ margin-top:28px; padding:24px 26px; background:#faf8f8; border-left:3px solid #e8344f; border-radius:0 12px 12px 0; }
  .mcv-uef-quote p{ font-size:15px; font-style:italic; color:#191419; margin:0 0 10px; }
  .mcv-uef-quote .who{ font-family:'JetBrains Mono',monospace; font-size:12px; color:#6d666d; font-style:normal; }
  .mcv-uef-revgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-uef-revcard{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:28px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-uef-revcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-uef-revcard .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:#a70d2a; margin-bottom:10px; }
  .mcv-uef-revcard h3{ font-size:16.5px; margin-bottom:10px; color:#191419; }
  .mcv-uef-revcard p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-uef-revcard .core{ display:inline-block; margin-top:14px; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:#a70d2a; background:rgba(232,52,79,.08); border:1px solid rgba(232,52,79,.25); border-radius:100px; padding:3px 10px; }
  .mcv-uef-disclose{ background:#faf8f8; border:1px dashed rgba(11,11,16,0.1); border-radius:14px; padding:26px 28px; max-width:860px; margin:0 auto; }
  .mcv-uef-disclose h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-uef-disclose p{ font-size:13.5px; color:#6d666d; margin:0 0 10px; }
  .mcv-uef-disclose p:last-child{ margin-bottom:0; }
  .mcv-uef-callout .figs{ display:flex; flex-wrap:wrap; gap:32px; margin-top:22px; padding-top:20px; border-top:1px solid rgba(255,255,255,0.12); }
  .mcv-uef-callout .figs div{ font-size:12.5px; color:rgba(255,255,255,.65); }
  .mcv-uef-callout .figs strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:20px; color:#fff; margin-bottom:3px; }
  @media (max-width:900px){
    .mcv-uef-drivers,.mcv-uef-steps,.mcv-uef-checkgrid,.mcv-uef-flags,.mcv-uef-ptgrid,.mcv-uef-cscols,.mcv-uef-revgrid{ grid-template-columns:1fr; }
    .mcv-uef-csbox{ padding:28px 24px; }
  }
  /* ===== components ported from the shipped reference bundle (instagram-clone) ===== */
  .mcv-uef-aside{ border-left:3px solid #e8344f; background:#faf8f8; border-radius:0 16px 16px 0; padding:32px 36px; }
  .mcv-uef-aside h3{ font-size:17px; margin-bottom:14px; color:#191419; }
  .mcv-uef-aside ul{ margin:0; padding:0; list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:16px 32px; }
  .mcv-uef-aside li{ padding-left:18px; position:relative; font-size:14px; color:#191419; line-height:1.6; }
  .mcv-uef-aside li::before{ content:''; position:absolute; left:0; top:7px; width:7px; height:7px; background:#e8344f; transform:rotate(45deg); }
  .mcv-uef-aside li span{ color:#6d666d; display:block; font-size:12.5px; margin-top:2px; }
  .mcv-uef-flowrow{ display:grid; grid-template-columns:64px 1fr; gap:22px; padding:28px 0; border-bottom:1px solid rgba(11,11,16,0.1); align-items:start; }
  .mcv-uef-flowrow:last-child{ border-bottom:none; }
  .mcv-uef-flowrow h3{ font-size:18px; margin-bottom:8px; color:#191419; }
  .mcv-uef-flowrow p{ color:#6d666d; font-size:14.5px; margin:0; max-width:760px; }
  .mcv-uef-flownum{ width:56px; height:56px; border-radius:50%; border:1.5px solid rgba(11,11,16,0.1); display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; color:#a70d2a; font-size:16px; }
  .mcv-uef-icongrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
  .mcv-uef-iconitem{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:14px; padding:22px 24px; display:flex; gap:14px; align-items:flex-start; box-shadow:0 6px 18px rgba(0,0,0,.05); }
  .mcv-uef-iconitem h3{ font-size:15px; margin-bottom:6px; color:#191419; }
  .mcv-uef-iconitem p{ font-size:13px; color:#6d666d; margin:0; }
  .mcv-uef-icondot{ width:34px; height:34px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); flex:none; display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; }
  .mcv-uef-steprow{ display:flex; gap:24px; padding:22px 0; border-bottom:1px solid rgba(11,11,16,0.1); }
  .mcv-uef-steprow:last-child{ border-bottom:none; }
  .mcv-uef-step-num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:15px; color:#a70d2a; flex:none; width:90px; padding-top:2px; }
  .mcv-uef-step-body h3{ font-size:17px; color:#191419; margin-bottom:6px; }
  .mcv-uef-step-body p{ font-size:14.5px; color:#6d666d; margin:0; }
  .mcv-uef-trustband{ background:#0a0a0a; color:#fff; padding:96px 0; position:relative; overflow:hidden; }
  .mcv-uef-trustband .ring{ position:absolute; border:1.5px solid rgba(232,52,79,.16); border-radius:50%; width:420px; height:420px; top:-160px; left:-140px; }
  .mcv-uef-trustband .head{ text-align:center; max-width:720px; margin:0 auto 44px; position:relative; z-index:2; }
  .mcv-uef-trustband .head .kicker{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:#ff8090; margin-bottom:12px; }
  .mcv-uef-trustband .head h2{ color:#fff; font-size:clamp(22px,3vw,34px); }
  .mcv-uef-trustband .head p{ color:rgba(255,255,255,.68); margin-top:14px; }
  /* the band markup uses the prefixed head class, so scope the light colours to it explicitly -
     without this the h2 falls through to .mcv-uef-head h2 (#191419) and vanishes on the black band */
  .mcv-uef-trustband .mcv-uef-head h2{ color:#ffffff; font-size:clamp(22px,3vw,34px); }
  .mcv-uef-trustband .mcv-uef-head p{ color:rgba(255,255,255,0.68); }
  .mcv-uef-trustband .mcv-uef-head .kicker{ color:#ff8090; }
.mcv-uef-trustband .mcv-uef-note{ color:rgba(255,255,255,0.68); }
.mcv-uef-pt .mcv-uef-note{ color:rgba(255,255,255,0.68); }
  .mcv-uef-trustgrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; position:relative; z-index:2; }
  .mcv-uef-trustcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:16px; padding:26px 22px; }
  .mcv-uef-trustcard h3{ color:#fff; font-size:15px; margin-bottom:8px; }
  .mcv-uef-trustcard p{ color:rgba(255,255,255,.68); font-size:13px; margin:0; line-height:1.55; }
  .mcv-uef-trusticon{ width:38px; height:38px; border-radius:10px; background:rgba(232,52,79,.16); border:1px solid rgba(232,52,79,.4); display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
  .mcv-uef-scorecard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 26px; }
  .mcv-uef-scorecard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:16px; }
  .mcv-uef-scorerow{ display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid rgba(255,255,255,0.12); }
  .mcv-uef-scorerow:last-child{ border-bottom:none; }
  .mcv-uef-scorerow .lbl2{ font-size:12.5px; color:rgba(255,255,255,.75); }
  .mcv-uef-scorerow .val{ font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:#fff; }
  .mcv-uef-scorerow .val.good{ color:#ff8090; }
  /* scorecard is a DARK card sitting in a light section. Rows authored as
     **label**text inherit var(--ink) and vanish (1.13:1).
     Give them light ink and stack them; .lbl2/.val two-column rows are untouched. */
  .mcv-uef-scorerow{ flex-wrap:wrap; }
  .mcv-uef-scorecard > .mcv-uef-scorerow > strong{ flex:1 0 100%; color:#ffffff; font-size:14.5px; margin-bottom:4px; }
  .mcv-uef-scorecard > .mcv-uef-scorerow > span{ flex:1 0 100%; color:rgba(255,255,255,0.78); font-size:13px; line-height:1.62; }
  .mcv-uef-cs-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:24px; flex-wrap:wrap; margin-bottom:28px; }
  .mcv-uef-cs-top p{ color:#6d666d; font-size:14.5px; max-width:480px; margin:0; }
  .mcv-uef-cs-meta{ text-align:right; font-size:13.5px; }
  .mcv-uef-cs-meta strong{ display:block; color:#191419; font-size:14.5px; }
  .mcv-uef-cs-meta .lbl{ font-family:'JetBrains Mono',monospace; font-size:10.5px; text-transform:uppercase; letter-spacing:.08em; color:#6d666d; margin:2px 0 12px; }
  .mcv-uef-cs-stats{ display:grid; grid-template-columns:repeat(3,1fr); border:1px solid rgba(11,11,16,0.1); border-radius:16px; margin-bottom:24px; overflow:hidden; }
  .mcv-uef-cs-stat{ text-align:center; padding:22px 12px; border-right:1px solid rgba(11,11,16,0.1); }
  .mcv-uef-cs-stat:last-child{ border-right:none; }
  .mcv-uef-cs-stat .v{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:26px; color:#a70d2a; }
  .mcv-uef-cs-stat .l{ font-size:12.5px; color:#6d666d; margin-top:4px; }
  .mcv-uef-cs-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
  .mcv-uef-cs-box{ background:#faf8f8; border-radius:14px; padding:22px 24px; }
  .mcv-uef-cs-box .h{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#6d666d; margin-bottom:12px; }
  .mcv-uef-cs-box ul{ margin:0; padding:0; list-style:none; display:grid; gap:8px; }
  .mcv-uef-cs-box li{ padding-left:16px; position:relative; font-size:13.5px; color:#191419; line-height:1.55; }
  .mcv-uef-cs-box li::before{ content:''; position:absolute; left:0; top:7px; width:6px; height:6px; background:#e8344f; transform:rotate(45deg); }
  .mcv-uef-cs-quote{ border-left:3px solid #e8344f; background:#faf8f8; border-radius:0 14px 14px 0; padding:22px 26px; margin-top:16px; display:flex; gap:16px; align-items:flex-start; }
  .mcv-uef-cs-quote p{ font-style:italic; font-size:15px; color:#191419; margin:0 0 10px; }
  .mcv-uef-cs-avatar{ width:38px; height:38px; border-radius:50%; background:#a70d2a; color:#fff; display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:13px; flex:none; }
  .mcv-uef-cs-who strong{ display:block; font-size:13.5px; color:#191419; }
  .mcv-uef-cs-who span{ font-size:12.5px; color:#6d666d; }
  .mcv-uef-cs-foot{ margin-top:20px; padding-top:16px; border-top:1px solid rgba(11,11,16,0.1); font-size:12.5px; color:#6d666d; }
  .mcv-uef-mockwrap{ position:relative; }
  .mcv-uef-chartcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 26px; position:relative; }
  .mcv-uef-chartcard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:18px; }
  .mcv-uef-chartcard .mcv-uef-barrow{ display:flex; align-items:center; gap:14px; height:auto; margin:0 0 14px; }
  .mcv-uef-chartcard .mcv-uef-barrow .l{ flex:0 0 140px; font-size:12.5px; line-height:1.35; color:rgba(255,255,255,.78); }
  .mcv-uef-chartcard .mcv-uef-barrow>.bar{ flex:1; height:8px; border-radius:999px; background:rgba(255,255,255,.10); overflow:hidden; }
  .mcv-uef-chartcard .mcv-uef-barrow>.bar>.mcv-uef-barcol{ height:8px; border-radius:999px; background:linear-gradient(90deg,#ff8090,#d81b46); }
  .mcv-uef-chartcard .note{ margin-top:18px; padding-top:14px; border-top:1px solid rgba(255,255,255,0.12); font-size:11.5px; line-height:1.5; color:rgba(255,255,255,.62); }
  .mcv-uef-seggrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
  .mcv-uef-segcard{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:16px; padding:26px 22px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-uef-segcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-uef-segcard h3{ color:#191419; font-size:15.5px; margin-bottom:8px; }
  .mcv-uef-segcard p{ color:#6d666d; font-size:13px; margin:0; line-height:1.55; }
  .mcv-uef-segcard ul{ margin:12px 0 0; padding-left:17px; }
  .mcv-uef-segcard li{ color:#6d666d; font-size:12.5px; line-height:1.5; margin-bottom:6px; }
  .mcv-uef-segcard li:last-child{ margin-bottom:0; }
  .mcv-uef-segicon{ width:38px; height:38px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); display:flex; align-items:center; justify-content:center; margin-bottom:14px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; transition:background .3s; }
  .mcv-uef-modelgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-uef-modelcard{ position:relative; background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:26px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; overflow:hidden; }
  .mcv-uef-modelcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-uef-modelcard .ghost{ position:absolute; top:-4px; right:6px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:64px; color:#000; opacity:.045; line-height:1; }
  .mcv-uef-modelcard:hover .ghost{ color:#e8344f; opacity:.09; }
  .mcv-uef-modelcard .stage{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#a70d2a; margin-bottom:10px; position:relative; }
  .mcv-uef-modelcard h3{ font-size:16.5px; margin-bottom:8px; position:relative; color:#191419; }
  .mcv-uef-modelcard p{ font-size:13.5px; color:#6d666d; margin:0; line-height:1.55; position:relative; }
  .mcv-uef-streamlist{ display:flex; flex-direction:column; gap:9px; }
  .mcv-uef-streamrow{ display:flex; align-items:center; gap:12px; padding:9px 12px; border:1px solid rgba(255,255,255,0.12); border-radius:10px; background:rgba(255,255,255,.03); }
  .mcv-uef-streamrow .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; color:#ff8090; }
  .mcv-uef-streamrow .s{ font-size:13px; color:#fff; font-weight:600; }
  @media (max-width:900px){
    .mcv-uef-aside ul{ grid-template-columns:1fr; }
    .mcv-uef-flowrow{ grid-template-columns:48px 1fr; gap:16px; }
    .mcv-uef-flownum{ width:44px; height:44px; font-size:14px; }
    .mcv-uef-icongrid,.mcv-uef-cs-grid,.mcv-uef-modelgrid{ grid-template-columns:1fr; }
    .mcv-uef-trustgrid,.mcv-uef-seggrid{ grid-template-columns:1fr 1fr; }
    .mcv-uef-cs-stats{ grid-template-columns:1fr; }
    .mcv-uef-cs-stat{ border-right:none; border-bottom:1px solid rgba(11,11,16,0.1); }
    .mcv-uef-cs-stat:last-child{ border-bottom:none; }
    .mcv-uef-cs-top,.mcv-uef-steprow{ flex-direction:column; }
    .mcv-uef-cs-meta{ text-align:left; }
    .mcv-uef-chartcard .mcv-uef-barrow{ gap:10px; }
    .mcv-uef-chartcard .mcv-uef-barrow .l{ flex:0 0 104px; font-size:11.5px; }
  }
* + .mcv-uef-callout{ margin-top:22px; }
.mcv-uef-cta .mcv-uef-byline,.mcv-uef-cta .mcv-uef-footerbar{ color:#ffffff; }
.mcv-uef-cta .mcv-uef-byline .dotsep{ opacity:.65; }
.mcv-uef-trustband .kicker,.mcv-uef-pt .kicker{ color:var(--crimson-light); }
.mcv-uef-cta .kicker{ color:#ffffff; }
.mcv-uef-cta .mcv-uef-footermeta{ color:#ffffff; }
@media (max-width:560px){ .mcv-uef-trustgrid,.mcv-uef-seggrid{ grid-template-columns:1fr; } }

  .mcv-uef-trustgrid{ grid-template-columns:repeat(3,1fr); }
  @media (max-width:900px){ .mcv-uef-trustgrid{ grid-template-columns:1fr 1fr; } }
  @media (max-width:560px){ .mcv-uef-trustgrid{ grid-template-columns:1fr; } }

    
    
      
        
          
            [Home](/)/[UberEats Clone](/ubereats-clone/)/Features
          
          UberEats Clone · Features
          
# UberEats Clone Features: What Happens After the Order

          
Any cart plugin can take an order. What separates a delivery marketplace from an ordering page is everything downstream of that: commission calculated and frozen onto a settlement row, store and rider balances moving, refunds carrying reasons and an approval trail, and a payout run that never pays twice. All of that is built, and every third-party account it needs is named against the feature.

          [Request a Live Demo →](https://miracuves.com/schedule-consultation/)[Full Overview](/ubereats-clone/)
          
            **4** apps included
            **13** payment gateways
            **6 days** to deploy
          
        
        
          CommissionFrozen at settlement
          
            What One Order Actually Writes
            
              01A header and a row per line item
              02A named timestamp per status
              03Item price and discount snapshot
              04Payment legs for split tender
              05A settlement row with the rate
              06The payout run it lands in
            
          
        
      
    
  

  
    
      
        300Database Tables
        136Eloquent Models
        378Migrations
        764Admin Routes
      
    
  

  
    
      
        By Role
        
## Feature Set by Role

        
Five surfaces over one Laravel monolith that owns every business rule.

      
      
        
          01
          
### The Customer

          
Search by dish, restaurant or cuisine with filters for rating, price and delivery time, seeing only the restaurants that actually deliver to them. Sizes, extras, allergens and nutrition on the dish page, then checkout for delivery, collection or a table, with scheduled times, tips, coupons and loyalty points behind it.

        
        
          02
          
### The Restaurant

          
An order board to accept and prepare, a menu editor with photos, sizes, extras and bulk upload, items marked sold out in one tap, opening hours and holiday schedules, staff logins beneath the owner, and earnings and payout history in one view rather than in an email from you.

        
        
          03
          
### The Counter

          
A built-in till inside the restaurant panel for walk-in and phone orders, so trade that never touched the app still lands in the same books. Dine-in and collection run through the same order pipeline with the rider steps simply skipped, which is why nothing happens outside your reporting.

        
        
          04
          
### The Delivery Partner

          
Accept or decline assigned orders, turn-by-turn navigation to pickup and drop-off, the delivery code that confirms handover, and a running view of earnings, incentives and the cash they are carrying. Cash collected is tracked against a ceiling you set per partner and per store.

        
        
          05
          
### The Operations Desk

          
Approve restaurants and delivery partners, draw delivery areas on a map and set their charges, step into any live order to reassign, progress, cancel with an authority record or edit it before preparation locks, and approve or reject refund requests with the trail that follows.

        
        
          06
          
### The Finance Desk

          
Scheduled disbursement for stores and delivery partners with the cadence, minimum amount, waiting period and week start all configurable, overlap locks so a slow run never pays twice, a full statement per restaurant, and sales, commission, payout and tax reports that export.

        
      
      
Staff accounts carry granular module permissions, so support sees orders, finance sees payouts and nobody sees more than they should. A separate vendor-employee layer scopes store staff below the owner.

    
  

  
    
      
        Compare
        
## Clone vs Generic Script vs Building From Scratch

        
Most routes to a delivery platform hold up until the first payout run.

      
      
        
| What decides it | Miracuves UberEats Clone | Generic delivery script |
| --- | --- | --- |
| Time to a working platform | Six working days | Unknown, and largely do it yourself |
| What a rate change does to old orders | Nothing. The rate is frozen onto the settlement row | Rewrites last quarter's numbers silently |
| Opening a second city | Draw a zone, set its charges. An afternoon | A second deployment to maintain and upgrade |
| Walk-in and phone trade | A built-in till, landing in the same books | Outside the platform, and outside the reports |
| Changing commission or delivery fees | One of roughly 120 settings keys | A developer and a deployment |
| Paying restaurants and riders | Scheduled runs with overlap locks | A spreadsheet, and a bank transfer by hand |
| Split payment | Recorded as separate payment legs | One total, and no way to reconcile it |
| Source code | Yours outright, no per-order royalty | Often limited, sometimes encrypted |

      
      
UberEats itself is the reference for what this category looks like; it is not a product you can buy or self-host. The commercially useful comparison is the second column against the third, and against a custom build, which is covered on the [Development Cost](/ubereats-clone/development-cost/) page.

    
  

  
    
      
        End to End
        
## How It Works, End to End

        
Six stages, each a named surface in the code rather than a diagram drawn afterwards.

      
      
        Step 1
### They enter an address

Coverage resolves from zone polygons rather than a scan, so the customer sees only restaurants that actually serve them. Which stores appear, which riders can be assigned and which staff can act on the order all follow from the zone it belongs to.

        Step 2
### They build an order

Items carry variation option stock, add-on groups, attributes, allergens, tags and daily stock counters. Sizes, crusts, toppings and extras sit on the dish, and a restaurant marks something sold out in one tap without calling you to do it.

        Step 3
### They pay however they want

Thirteen gateways ship alongside the customer wallet, cash on delivery with a ceiling you set, and operator-defined offline methods with a proof-and-approval workflow. Part wallet and part card is supported, and split tender is recorded as separate payment legs rather than one blended total.

        Step 4
### The restaurant works it

The order lands on the board, is accepted and prepared, and every status transition writes its own named timestamp. Alongside it the built-in till takes walk-in and phone orders into the same pipeline, so counter trade is not invisible to your reports.

        Step 5
### A partner carries it

Delivery partners are filtered by zone before assignment, follow turn-by-turn navigation, and close the job with a one-time delivery code the customer reads out. With verification enabled a delivered status carries evidence rather than being a tap somebody made in the street.

        Step 6
### The money settles

Commission percentage and discount split are frozen onto the transaction row, and item revenue reads the order line rather than the current menu price. Scheduled disbursement pays stores and riders on your cadence with overlap locks, leaving a transaction history behind every run.

        Step 7
### The loop closes

What a customer paid becomes what the restaurant is owed becomes what you pay out, all from the same record of the order. Sales, commission, payout and tax reports each show what was actually charged at the time, so changing a rate later never rewrites your old numbers.

      
      
Loyalty points, wallet credit, cashback and referral rewards run alongside the whole loop, at rates you set rather than rates we chose.

    
  

  
    
      
        Justified
        
## Every Feature Earns Its Place

        
Each row is here because a delivery marketplace stops working without it, not because a competitor lists it.

      
      
        
| Module | Why it is in the base build |
| --- | --- |
| Commission frozen at settlement | If the rate is read live, changing it rewrites history. Freezing it onto the transaction row is what makes last quarter's numbers still true next quarter. |
| Zones as the operating unit | Coverage, dispatch, staff access, marketing and notifications all hang off the delivery area. It is the closest thing to a tenant boundary in the data model, and it is why a second city is a setting. |
| Overlap locks on payout runs | Disbursement is the one job where a retry costs real money. A lock is the difference between a slow run and paying every restaurant twice. |
| The built-in till | Walk-in and phone trade is real revenue. Left outside the platform it is invisible to commission, to reporting and to the restaurant's own payout statement. |
| Split tender as payment legs | Part wallet and part card is one order and two movements of money. Recorded as a single total it cannot be reconciled against either rail. |
| Cash ceilings per partner | A rider carrying too much float is an operational risk you cannot see until it goes wrong. The ceiling stops assigning cash orders before it does. |
| The business-model guard | Commission and subscription are stored as a setting with a guard that refuses to disable both at once, so store economics can never become undefined by a stray click. |
| Surface-isolated credentials | Customer tokens cannot reach store routes, and store and delivery tokens resolve through their own middleware, so five surfaces never share a trust boundary. |

      
      
Alongside these sit three Laravel modules most platforms charge separately for: an AI ordering assistant, a short-video food feed, and full tax handling with per-order computation and exports.

    
  

  
    
      
        Stack
        
## The Technology Behind the Features

        
Conventional and easy to hire for, chosen so the operating knowledge is common rather than exotic.

      
      
        **Application core**Laravel 12 on PHP 8.2 and above with MySQL and Passport: roughly 300 tables under 378 migrations in strict date order, 136 Eloquent models across eleven business domains, and 62 admin, 55 API and 29 vendor-web controllers, with central pricing and delivery-fee helpers held in one seam.
        **Surfaces and routing**326 route definitions on API v1 with v2 reserved for update endpoints, 764 admin console routes behind role and module gates, 258 store web panel routes under plan entitlements, and 33 server-rendered storefront pages, with separate middleware per surface so tokens never cross.
        **Client applications**Three Flutter builds on GetX rather than one app wearing three hats: the customer app across 727 Dart files in 36 feature modules, the store app across 503 files in 29, and the delivery app across 234 files in 17. The storefront is Next.js 15 and React 18 on MUI and Redux Toolkit with i18n and right-to-left support.
        **Money and settlement**Thirteen gateways plus wallet, cash and offline rails, commission and discount split frozen at settlement, split tender recorded as separate payment legs, live and test credential sets per gateway switched by mode, scheduled disbursement with overlap locks, and a tax module with per-order computation and exports.
        **Realtime and messaging**Firebase Cloud Messaging on HTTP v1 with per-project service-account authentication rather than a legacy server key, zone-scoped topics so a send reaches one city, a Pusher-compatible websocket server with Laravel Echo, and in-order chat between customer, store and delivery partner.
        **Configuration and storage**Roughly 120 named settings keys across business, customer, delivery-partner, order, store, disbursement, payment, mail, theme, policy and third-party tabs, read at decision points rather than compiled in. Local disk or S3-compatible storage switched at runtime, and theme, logo and invoice layout as settings rows.
      
      
A single Laravel monolith owns every business rule and the five surfaces are presentation layers over one versioned API. One deploy, one schema, one set of rules, which is what keeps four clients from drifting apart.

    
  

  
    
    
      
        Honest Readiness
        
## What Is Not Included in the Base Package

        
A fixed price only means something if the boundary around it is stated, so this is that boundary.

      
      
        
          01
          
### The documentation names its own gaps

          
Cross-origin resource sharing ships with wildcard origins on the API and needs narrowing to your domains. Content-Security-Policy and related browser hardening headers are not emitted by the application and belong at the web server or middleware layer. Session cookies ship with the same-site attribute unset.

        
        
          02
          
### No two-step login for admin staff

          
Operator accounts sign in with a password. On a console that can move payouts, reassign orders and change commission rates, adding a second factor is worth scheduling early, and it is scoped work rather than a switch in the settings surface.

        
        
          03
          
### Search is database-backed

          
Discovery runs on index-hinted scopes with eager-loading discipline rather than an external search engine. That is the right trade until your catalogue is very large, and a dedicated engine is documented as the extension point rather than pretended away.

        
        
          04
          
### Riders are yours, or a courier integration

          
The delivery partner app assumes you run your own riders. Connecting an outside courier company, if you do not, is an integration scoped separately. So is publishing to the Apple App Store on your behalf, which depends on your developer identity rather than ours.

        
        
          05
          
### Thirteen gateways, and no fourteenth

          
Stripe, PayPal, Razorpay, Paystack, Flutterwave, Paytm, PayTabs, MercadoPago, Paymob, SenangPay, SSLCommerz, LiqPay and bKash ship in the codebase. Any gateway beyond those thirteen is integration work, as are custom data feeds into your own reporting tools.

        
        
          06
          
### What is built is real

          
Roughly 300 tables under 378 migrations, 136 models, three separate Flutter builds, a server-rendered storefront, 764 admin routes behind role gates, commission snapshotting, scheduled disbursement with overlap locks, per-order tax computation, and surface-isolated credentials with constant-time comparison on machine-to-machine keys.

        
      
      
Also outside the build: a storefront design tailored to a specific vertical, and any regulatory certification for a controlled category. Those are honest limits, and we will tell you plainly where your market needs work beyond configuration.

    
  

  
    
      
        
          Development Company
          
### See how Miracuves compares to agencies and freelancers

          
The deployment process, the Flyereats engagement we delivered in 2025, the pre-launch hardening list, and the nine questions worth asking before you hire anyone - on the Development Company page.

        
        [See the comparison →](/ubereats-clone/development-company/)
      
    
  

  
    
      
        FAQ
        
## Frequently Asked Questions

      
      
        
          
            What do the three mobile apps actually do?
            They are three separate apps, not one app wearing three hats. Customers get ordering, saved addresses, live tracking, chat, wallet, loyalty, referrals and a membership programme. Restaurants get incoming orders, menu management with photos and stock, a built-in till for walk-in and phone orders, staff logins, expenses and their payout history. Delivery partners get assigned jobs, navigation to pickup and drop-off, the delivery code, their daily earnings and the cash they are carrying.
          
          
            How many payment gateways are included?
            Thirteen gateway integrations ship in the codebase: Stripe, PayPal, Razorpay, Paystack, Flutterwave, Paytm, PayTabs, MercadoPago, Paymob, SenangPay, SSLCommerz, LiqPay and bKash. Alongside them sit the customer wallet, cash on delivery, and operator-defined offline payment methods with a proof-and-approval workflow. The checkout never hardcodes the list: clients read the active methods from configuration, so which gateways appear is deployment state rather than a code change.
          
          
            Does a delivery leave any proof?
            Yes, and it is an operator toggle rather than fixed behavior. With delivery verification enabled, a one-time code sits between arrival and completion, so a delivered status carries evidence rather than being a tap the partner made in the street. Alongside it, cash collected is tracked against a configured ceiling per delivery partner and per store, so a partner carrying too much float stops being assigned cash orders until they settle.
          
        
        
          
            How does the platform handle more than one city?
            Through zones, and this is the design decision that most affects how fast you can expand. A zone carries its own coverage polygon, its own delivery pricing, its own cash-on-delivery ceiling and its own notification topics. Which restaurants a customer sees, which riders get assigned, and which staff can act on an order all follow from the area it belongs to. Opening a second city means drawing another area and setting its charges.
          
          
            Is it only for restaurant food?
            The core vertical is food and the catalog model was shaped around it, but nothing in the order pipeline is food-exclusive. Items carry variation option stock, add-on groups, attributes, allergens, tags and daily stock counters, and groceries, pharmacy and general retail use exactly that machinery. Vertical differences surface as configuration: unit handling through attributes, and prescription-style instructions through the order note and delivery instruction fields.
          
          
            How are stores and delivery partners paid?
            Through scheduled disbursement commands, with the cadence, minimum amount, waiting period and week start all configurable from the console rather than set in a crontab. The runs carry overlap locks so a slow execution never pays twice, and every run leaves a transaction history behind it. The detail that makes the numbers trustworthy is that every order records what was actually charged at the time, rather than working it out again later from current rates.
          
        
      
    
  

  
    
    
      
        
## Place a real order, then follow the money

Order on the website, accept it as the restaurant, watch it move through delivery, then open the same order in the admin dashboard and see your commission calculated against it.

        [Request a Live Demo](https://miracuves.com/schedule-consultation/)[Full Overview](/ubereats-clone/)
      
    
  

  
    
      
        Explore
        
## Explore the UberEats Clone

      
      
        [Overview](/ubereats-clone/)
        [Features](/ubereats-clone/features/)
        [Development Cost](/ubereats-clone/development-cost/)
        [Development Company](/ubereats-clone/development-company/)
        [Business Model](/ubereats-clone/business-model/)
      
    
  

  
    
    
      
        
## Four apps. One set of books.

        
Customer, restaurant and delivery partner apps plus your admin console, over one Laravel monolith and one schema, with the source yours outright and no cut of what the platform earns.

        [Talk to Us →](https://miracuves.com/schedule-consultation/)
      
      
        
          **Written by the Miracuves Product Team**·
          Reviewed for accuracy·
          Last updated **September 10, 2026**
        
        
          Miracuves · UberEats Clone Solution
          Feature set, stack and stated limitations cross-verified against the hub, 2026-09-10
        
      
    
  

				
				
				
				
						
					
			
						
				
					
  /* MIRACUVES - TRADEMARK / NON-AFFILIATION NOTICE (v3).
     Scoped under .mcv-tmn so it cannot collide with the hub connector (mcv-hubx-, mcv-hubxa-)
     or any block above it. Always the last block on the page, immediately before the footer.
     Structure is deliberate: one plain-language lead people actually read, then the three
     supporting positions split out so each is scannable rather than buried in a paragraph.
     Fonts are declared but not loaded: pages carrying the connector already have them, and the
     fallbacks are deliberate so this block never adds a render-blocking request. */
  .mcv-tmn{ font-family:'Plus Jakarta Sans',Arial,sans-serif; color:#191419; margin:0; padding:0; }
  .mcv-tmn *{ box-sizing:border-box; }
  .mcv-tmn-band{ background:#ffffff; padding:8px 0 76px; }
  .mcv-tmn-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; }
  .mcv-tmn-box{ background:#faf8f8; border:1px solid rgba(11,11,16,0.13); border-left:4px solid #a70d2a; border-radius:12px; padding:34px 38px; box-shadow:0 1px 2px rgba(25,20,25,0.04), 0 10px 30px rgba(25,20,25,0.05); }
  .mcv-tmn-head{ display:flex; align-items:center; gap:11px; margin:0 0 18px; }
  .mcv-tmn-dot{ width:8px; height:8px; background:#a70d2a; transform:rotate(45deg); flex:0 0 auto; }
  .mcv-tmn .mcv-tmn-head span.mcv-tmn-kicker{ font-family:'JetBrains Mono',ui-monospace,monospace; font-size:13px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:#a70d2a; }
  .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ margin:0 0 24px; font-size:20px; line-height:1.5; font-weight:600; color:#191419; max-width:56ch; letter-spacing:-.01em; }
  .mcv-tmn .mcv-tmn-box b.mcv-tmn-brand{ color:#a70d2a; font-weight:700; }
  .mcv-tmn-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px 36px; padding-top:24px; border-top:1px solid rgba(11,11,16,0.11); }
  .mcv-tmn .mcv-tmn-col span.mcv-tmn-lbl{ display:block; font-family:'JetBrains Mono',ui-monospace,monospace; font-size:10.5px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:#8a8085; margin:0 0 8px; }
  .mcv-tmn .mcv-tmn-col p{ margin:0; font-size:14px; line-height:1.7; color:#453d42; }
  .mcv-tmn-foot{ margin-top:26px; padding-top:18px; border-top:1px solid rgba(11,11,16,0.11); }
  .mcv-tmn .mcv-tmn-foot a{ font-family:'JetBrains Mono',ui-monospace,monospace; font-size:12px; font-weight:600; letter-spacing:.04em; color:#a70d2a; text-decoration:none; border-bottom:1px solid rgba(167,13,42,0.32); }
  .mcv-tmn .mcv-tmn-foot a:hover{ border-bottom-color:#a70d2a; }
  @media (max-width:900px){
    .mcv-tmn-cols{ grid-template-columns:1fr; gap:22px; }
    .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ font-size:18px; }
  }
  @media (max-width:600px){
    .mcv-tmn-band{ padding:4px 0 48px; }
    .mcv-tmn-box{ padding:26px 22px; border-radius:10px; border-left-width:3px; }
    .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ font-size:17px; line-height:1.45; margin-bottom:20px; }
    .mcv-tmn .mcv-tmn-head span.mcv-tmn-kicker{ font-size:12px; letter-spacing:.16em; }
  }

  
    
      
        Disclaimer
        
Miracuves is an independent software development company. We are not affiliated with, connected to, sponsored by, or endorsed by **UberEats**.

        
          
            Why this name
            
“**UberEats** Clone” is used descriptively. It is how the software industry refers to building a platform with functionality similar to UberEats, and how clients search for it.

          
          
            Who built this
            
The entire design and codebase is built by our own team. The product contains no code, design, graphics, or content originating from the UberEats website or applications.

          
          
            Trademarks
            
**UberEats** and all other third-party names and marks are the property of their respective owners, referenced here solely to describe the category of software offered.

          
        
        [Read our full Legal Notice & Disclaimer →](/disclaimer/)
