Sell Lemons Scripts — Auto Farm, Auto Harvest, Auto Click at Iba Pa!

  • 11:45, 15.06.2026

Sell Lemons Scripts — Auto Farm, Auto Harvest, Auto Click at Iba Pa!

Ang gameplay ng Roblox Sell Lemons ay nakatuon sa pagtatanim ng mga lemon, pag-aani nito, pagbebenta para sa pera, at paggamit ng kinita para mapahusay ang iyong base. Habang umuusad ka, maaari mong palawakin ang produksyon, i-unlock ang mga bagong lugar, makakuha ng mga espesyal na benepisyo, at unti-unting pataasin ang kita.

Ang script na ito para sa Sell Lemons ay idinisenyo upang gawing mas simple ang cycle na ito sa pamamagitan ng awtomatikong pagsasagawa ng mga pangunahing gawain, na ginagawang mas episyente at mas mabilis ang progreso. Sa materyal na ito, makikita mo ang kumpletong listahan ng mga script na walang mga key!

NILALAMAN

Paano Mag-download ng Script para sa Sell Lemons

Ang mga script para sa Sell Lemons ay makukuha sa aming website nang walang bayad. Hindi mo kailangang dumaan sa mga ad, mag-subscribe, o tuparin ang karagdagang mga kondisyon para ma-access ang kinakailangang code.

Hindi mo na kailangang mag-download ng hiwalay na file: kopyahin lamang ang handa nang script mula sa listahan sa pahina at ipasok ito sa isang Roblox executor na komportable kang gamitin.

Kung hindi ka pa nakatrabaho ng Roblox scripts dati, kakailanganin mo muna ng executor. Ito ay isang espesyal na tool na kung saan ang mga third-party na script ay pinapatakbo sa loob ng laro.

Maraming mga executor, at maaari silang magkaiba ng malaki sa isa't isa. Ang ilan ay mas mahusay na gumagana sa ilang mga script, ang iba ay may mas mataas na katatagan o mas malawak na compatibility. Dapat ding isaalang-alang kung ang programa ay libre o nangangailangan ng bayad, at para sa aling platform ito ginawa: computer, smartphone, o pareho.

EXECUTOR
SUPPORTED PLATFORM
DISADVANTAGES
LINK
Windows PC
Walang bersyon para sa Android at iOS. Mahina, maaaring hindi suportahan ang ilang script
https://xeno-executor.com
Android, iOS, at PC
Nangangailangan ng manual na pag-update pagkatapos ng Roblox patches
https://delta-executor.com/
KRNL Executor
Android at iOS
Hindi sumusuporta sa Windows PC
https://krnlexecutor.com/
Arceus X Neo
Android at iOS
Hindi sumusuporta sa Windows PC
https://arceusx.com/
99 Nights in the Forest: Saan Matatagpuan ang Anvil?
99 Nights in the Forest: Saan Matatagpuan ang Anvil?   1
Guides

Listahan ng Lahat ng Sell Lemons Scripts

Sell Lemons Script Free Keyless
loadstring(game:HttpGet("https://raw.githubusercontent.com/LynX99-9/komtolmmek2script/refs/heads/main/CyraaHub.lua", true))()
Sell Lemons : Hacx Hub
loadstring(game:HttpGet("https://raw.githubusercontent.com/Zettabyte-ShinX/HacxHub/refs/heads/main/SellLemons"))()
Auto Upgrade + Auto Accept Phone Call + Auto Collect Lemons
loadstring(game:HttpGet("https://www.vaporscripts.xyz/VaporSellLemons", true))()
Sell Lemons OP Autofarm Free (MOBILE SUPPORT)
loadstring(game:HttpGet("https://obfuscatorhub.onrender.com/api/e69f4z00"))()
Sell Lemons AutoFarm | Auto Cash Auto Lemon |
loadstring(game:HttpGet("https://pastefy.app/hjgyZKCP/raw", true))()
Script Sell Lemons GUI Roblox
--// Rayfield local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Window = Rayfield:CreateWindow({     Name = "Lemon Sells",     LoadingTitle = "Lemon Sell Auto",     LoadingSubtitle = "By ChatGPT & Gouang",     ConfigurationSaving = {         Enabled = false,     },     KeySystem = false, }) local MainTab = Window:CreateTab("Main", 4483362458) --// Services local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer --// Find Tycoon local userTycoon = (function()     for _, v in pairs(workspace:GetChildren()) do         if v:IsA("Folder") and v.Name:match("Tycoon%d") then             if v:FindFirstChild("Owner") and v.Owner.Value == LocalPlayer then                 return v             end         end     end end)() if not userTycoon then     Rayfield:Notify({         Title = "Error",         Content = "Tycoon not found!",         Duration = 5,     })     return end --// Variables local AutoBuy = false local AutoUpgrade = false local AutoFruit = false local Buying = false local function getButtons()     local Buttons = {}     for _, obj in ipairs(userTycoon.Purchases:GetDescendants()) do         if obj:IsA("Model") then             local shown = obj:GetAttribute("Shown")             local purchased = obj:GetAttribute("Purchased")             if shown == true and purchased ~= true then                 local buttonPart = obj:FindFirstChild("Button")                 if buttonPart and buttonPart:IsA("BasePart") then                     table.insert(Buttons, {                         Name = obj.Name,                         Button = buttonPart,                     })                 end             end         end     end     return Buttons end local function buyButton(buttonData)     if Buying then         return     end     Buying = true     local character = LocalPlayer.Character     if not character then         Buying = false         return     end     local hrp = character:FindFirstChild("HumanoidRootPart")     if not hrp then         Buying = false         return     end     local buttonPart = buttonData.Button     pcall(function()         firetouchinterest(hrp, buttonPart, 0)         firetouchinterest(hrp, buttonPart, 1)     end)     Buying = false end task.spawn(function()     while true do         task.wait(0.0000001)         if AutoBuy then             local Buttons = getButtons()             for _, button in ipairs(Buttons) do                 pcall(function()                     buyButton(button)                 end)             end         end     end end) local function upgradeMachines()     for _, obj in ipairs(userTycoon.Purchases:GetDescendants()) do         if obj:IsA("RemoteFunction") and obj.Name == "Upgrade" then             pcall(function()                 for level = 1, 100 do                     obj:InvokeServer(level)                 end             end)         end     end end task.spawn(function()     while true do         task.wait(0.00001)         if AutoUpgrade then             pcall(function()                 upgradeMachines()             end)         end     end end) local Trees = {} local function addTree(obj)     if obj:IsA("Model") and obj.Name == "LemonTree" then         if not table.find(Trees, obj) then             table.insert(Trees, obj)         end     end end local function removeTree(obj)     local index = table.find(Trees, obj)     if index then         table.remove(Trees, index)     end end -- initial scan for _, v in ipairs(workspace:GetDescendants()) do     addTree(v) end -- realtime update workspace.DescendantAdded:Connect(addTree) workspace.DescendantRemoving:Connect(removeTree) local function noCollisionTree(tree)     for _, obj in ipairs(tree:GetDescendants()) do         if obj:IsA("BasePart") then             obj.CanCollide = false         end     end end local function teleportToTree(tree)     local character = LocalPlayer.Character     if not character then         return false     end     local hrp = character:FindFirstChild("HumanoidRootPart")     if not hrp then         return false     end     local cf = tree:GetPivot()     hrp.CFrame = cf + Vector3.new(0, 5, 0)     return true end local function collectFruit(tree)     noCollisionTree(tree)     local success = teleportToTree(tree)     if not success then         return     end     for _, obj in ipairs(tree:GetDescendants()) do         if obj:IsA("BasePart") and obj.Name == "Fruit" then             obj.CanCollide = false             local clickPart = obj:FindFirstChild("ClickPart")             if clickPart then                 local detector = clickPart:FindFirstChildOfClass("ClickDetector")                 if detector then                     task.wait(0.45)                     pcall(function()                         fireclickdetector(detector)                     end)                 end             end         end     end end task.spawn(function()     while true do         task.wait(0.1)         if AutoFruit then             for _, tree in ipairs(Trees) do                 if not AutoFruit then                     break                 end                 if tree and tree.Parent then                     pcall(function()                         collectFruit(tree)                     end)                 end             end         end     end end) MainTab:CreateToggle({     Name = "Auto Buy",     CurrentValue = false,     Flag = "AutoBuy",     Callback = function(Value)         AutoBuy = Value         Rayfield:Notify({             Title = "Auto Buy",             Content = Value and "Enabled" or "Disabled",             Duration = 3,         })     end, }) MainTab:CreateToggle({     Name = "Auto Upgrade",     CurrentValue = false,     Flag = "AutoUpgrade",     Callback = function(Value)         AutoUpgrade = Value         Rayfield:Notify({             Title = "Auto Upgrade",             Content = Value and "Enabled" or "Disabled",             Duration = 3,         })     end, }) MainTab:CreateToggle({     Name = "Auto Fruit",     CurrentValue = false,     Flag = "AutoFruit",     Callback = function(Value)         AutoFruit = Value         Rayfield:Notify({             Title = "Auto Fruit",             Content = Value and "Enabled" or "Disabled",             Duration = 3,         })     end, }) MainTab:CreateButton({     Name = "Destroy GUI",     Callback = function()         Rayfield:Destroy()     end, }) Rayfield:Notify({     Title = "Loaded",     Content = "Tycoon Autofarm Loaded Successfully",     Duration = 5, })
Sell Lemons Auto Buy, Auto Upgrade; Pick Fruit
--// Rayfield local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Window = Rayfield:CreateWindow({ Name = "Lemon Sells", LoadingTitle = "Lemon Sell Auto", LoadingSubtitle = "By ChatGPT & Gouang", ConfigurationSaving = { Enabled = false, }, KeySystem = false, }) local MainTab = Window:CreateTab("Main", 4483362458) --// Services local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer --// Find Tycoon local userTycoon = (function() for _, v in pairs(workspace:GetChildren()) do if v:IsA("Folder") and v.Name:match("Tycoon%d") then if v:FindFirstChild("Owner") and v.Owner.Value == LocalPlayer then return v end end end end)() if not userTycoon then Rayfield:Notify({ Title = "Error", Content = "Tycoon not found!", Duration = 5, }) return end --// Variables local AutoBuy = false local AutoUpgrade = false local AutoFruit = false local Buying = false local function getButtons() local Buttons = {} for _, obj in ipairs(userTycoon.Purchases:GetDescendants()) do if obj:IsA("Model") then local shown = obj:GetAttribute("Shown") local purchased = obj:GetAttribute("Purchased") if shown == true and purchased ~= true then local buttonPart = obj:FindFirstChild("Button") if buttonPart and buttonPart:IsA("BasePart") then table.insert(Buttons, { Name = obj.Name, Button = buttonPart, }) end end end end return Buttons end local function buyButton(buttonData) if Buying then return end Buying = true local character = LocalPlayer.Character if not character then Buying = false return end local hrp = character:FindFirstChild("HumanoidRootPart") if not hrp then Buying = false return end local buttonPart = buttonData.Button pcall(function() firetouchinterest(hrp, buttonPart, 0) firetouchinterest(hrp, buttonPart, 1) end) Buying = false end task.spawn(function() while true do task.wait(0.0000001) if AutoBuy then local Buttons = getButtons() for _, button in ipairs(Buttons) do pcall(function() buyButton(button) end) end end end end) local function upgradeMachines() for _, obj in ipairs(userTycoon.Purchases:GetDescendants()) do if obj:IsA("RemoteFunction") and obj.Name == "Upgrade" then pcall(function() for level = 1, 100 do obj:InvokeServer(level) end end) end end end task.spawn(function() while true do task.wait(0.00001) if AutoUpgrade then pcall(function() upgradeMachines() end) end end end) local Trees = {} local function addTree(obj) if obj:IsA("Model") and obj.Name == "LemonTree" then if not table.find(Trees, obj) then table.insert(Trees, obj) end end end local function removeTree(obj) local index = table.find(Trees, obj) if index then table.remove(Trees, index) end end -- initial scan for _, v in ipairs(workspace:GetDescendants()) do addTree(v) end -- realtime update workspace.DescendantAdded:Connect(addTree) workspace.DescendantRemoving:Connect(removeTree) local function noCollisionTree(tree) for _, obj in ipairs(tree:GetDescendants()) do if obj:IsA("BasePart") then obj.CanCollide = false end end end local function teleportToTree(tree) local character = LocalPlayer.Character if not character then return false end local hrp = character:FindFirstChild("HumanoidRootPart") if not hrp then return false end local cf = tree:GetPivot() hrp.CFrame = cf + Vector3.new(0, 5, 0) return true end local function collectFruit(tree) noCollisionTree(tree) local success = teleportToTree(tree) if not success then return end for _, obj in ipairs(tree:GetDescendants()) do if obj:IsA("BasePart") and obj.Name == "Fruit" then obj.CanCollide = false local clickPart = obj:FindFirstChild("ClickPart") if clickPart then local detector = clickPart:FindFirstChildOfClass("ClickDetector") if detector then task.wait(0.45) pcall(function() fireclickdetector(detector) end) end end end end end task.spawn(function() while true do task.wait(0.1) if AutoFruit then for _, tree in ipairs(Trees) do if not AutoFruit then break end if tree and tree.Parent then pcall(function() collectFruit(tree) end) end end end end end) MainTab:CreateToggle({ Name = "Auto Buy", CurrentValue = false, Flag = "AutoBuy", Callback = function(Value) AutoBuy = Value Rayfield:Notify({ Title = "Auto Buy", Content = Value and "Enabled" or "Disabled", Duration = 3, }) end, }) MainTab:CreateToggle({ Name = "Auto Upgrade", CurrentValue = false, Flag = "AutoUpgrade", Callback = function(Value) AutoUpgrade = Value Rayfield:Notify({ Title = "Auto Upgrade", Content = Value and "Enabled" or "Disabled", Duration = 3, }) end, }) MainTab:CreateToggle({ Name = "Auto Fruit", CurrentValue = false, Flag = "AutoFruit", Callback = function(Value) AutoFruit = Value Rayfield:Notify({ Title = "Auto Fruit", Content = Value and "Enabled" or "Disabled", Duration = 3, }) end, }) MainTab:CreateButton({ Name = "Destroy GUI", Callback = function() Rayfield:Destroy() end, }) Rayfield:Notify({ Title = "Loaded", Content = "Tycoon Autofarm Loaded Successfully", Duration = 5, })
[KEY] Auto Farm, Auto Tycoon, Auto Upgrade Stand, Auto Cash
loadstring(game:HttpGet("https://pastebin.com/raw/0x7sA25F", true))()
[KEY] OP AUTO FARM, AutoUPGRADE, AUTO SELL, Auto COLLECT & More
loadstring(game:HttpGet("https://pastefy.app/t68GRYBq/raw"))()
[KEY] Sell Lemons Script || End the game in 1 hour!
loadstring(game:HttpGet("https://api.jnkie.com/api/v1/luascripts/public/4b11c259bd6c83ee90ee87880e7cc7a7d3ed4f0f3845cd150bea27d6b8bde6cc/download"))()
[KEY] Best AUTO FARM, AutoUPGRADE, AUTO SELL, Auto COLLECT & More
loadstring(game:HttpGet("https://pastefy.app/t68GRYBq/raw"))()
[KEY] Sell Lemons Best OP Auto Farm Auto Upgrade Auto Lemon Auto Fly
loadstring(game:HttpGet("https://pastebin.com/raw/yhVeMeTJ"))()
[KEY] Sell Lemons Auto Upgrade Stand & Tycoon, Auto Collect Cash, Fruit, Phone
loadstring(game:HttpGet("https://twvz.click"))()
[KEY] Auto buy, upgrade and collect cash drops for Sell Lemons
loadstring( game:HttpGet("https://renhanced.deitsuki.fr/loader/selllemons", true) )()
[KEY] Free Sell Lemon Script
_G.autoExec = false loadstring(game:HttpGet("https://raw.githubusercontent.com/iLove-yuri/leeeeesbian/refs/heads/main/homumado.lua"))() ---- join my discord: https://discord.gg/uuza7nsPq
[KEY] Sell Lemons Auto Farm, Auto Tycoon, Auto Upgrade Stand, Auto Cash
loadstring(game:HttpGet("https://pastebin.com/raw/ppCz8Tps"))()

[KEY] Sell Lemons 🍋 Auto Upgrade, Auto Cash & More

loadstring(game:HttpGet("https://raw.githubusercontent.com/unrexl/Scripts/refs/heads/main/Lemon%20Tycoon"))()

[KEY] Auto Upgrades | Auto Cash Drop Collect | Auto Accept Offers
loadstring(game:HttpGet("https://raw.githubusercontent.com/AdrijanMC/Sell-Lemons-AUTO-UPGRADE-AUTO-COLLECT-CASH-DROPS/refs/heads/main/code.lua"))()

Paano Patakbuhin ang Script sa Sell Lemons

Hakbang 1

Una, ihanda ang executor na gagamitin mo para patakbuhin ang script. Kung mayroon ka nang naka-install na ganitong programa, maaari mong laktawan ang hakbang na ito. Sa halimbawang ito, ginagamit ang Xeno Executor.

  • Buksan ang website: https://www.xeno.now/

Sa pahina, hanapin ang Download button, i-click ito, at hintayin hanggang sa ma-save ang installation archive o file sa iyong computer.

Xeno Download Button
Xeno Download Button
Paano Makakuha ng Golden Seeds sa Grow a Garden 2
Paano Makakuha ng Golden Seeds sa Grow a Garden 2   
Guides

Hakbang 2

Kapag natapos na ang pag-download, buksan ang archive at i-extract ito sa anumang maginhawang folder, tulad ng iyong desktop. Pagkatapos, patakbuhin ang Xeno.exe file.

Kung gumagamit ka ng ibang Roblox executor sa halip na Xeno Executor, buksan ang pangunahing executable file ng partikular na programang napili mo.

Sa unang pag-launch, maaaring ipaalam sa iyo ng executor na kailangan ng karagdagang Windows components. Kadalasan, ito ay .NET SDK o Visual C++ Runtime. Kailangan mong i-install o i-update ang mga ito; kung hindi, maaaring hindi magsimula o gumana nang tama ang programa.

Launching Xeno.exe
Launching Xeno.exe

Hakbang 3

I-launch ang Roblox Sell Lemons at panatilihing bukas ang executor kasabay ng laro. Pagkatapos, bumalik sa executor window at gamitin ang Attach button. Kailangan ito para makakonekta ang programa sa tumatakbong Roblox client.

Kung tama ang lahat, lilitaw ang status na Attached Ingame! sa ibaba ng window. Ibig sabihin nito, matagumpay na nakilala ng executor ang laro at handa nang patakbuhin ang mga script.

Attach Button
Attach Button

Hakbang 4

Susunod, buksan ang aming listahan ng mga available na script, pumili ng anumang kasalukuyang opsyon, at kopyahin ang code nito. I-paste ang code na ito sa input field sa loob ng executor, pagkatapos ay pindutin ang Execute.

Entering the Sell Lemons Script in Xeno Executor
Entering the Sell Lemons Script in Xeno Executor
Fling Things and People Scripts: Super Throw, Anti Grab, at Iba Pa
Fling Things and People Scripts: Super Throw, Anti Grab, at Iba Pa   6
Article

Hakbang 5

Pagkatapos patakbuhin ang script, maghintay ng ilang segundo o mas matagal pa—ang bilis ng paglitaw ng menu ay nakadepende sa script mismo, sa executor, at sa kasalukuyang estado ng laro. Kapag lumitaw na ang GUI interface sa Sell Lemons, maaari mong paganahin ang mga available na feature, baguhin ang mga setting, at gamitin ang kakayahan ng script habang naglalaro.

Sell Lemons GUI Script
Sell Lemons GUI Script

Mga Pangunahing Tampok ng Sell Lemons Scripts

Ang Auto Fruit feature ay awtomatikong kumukuha ng mga lemon, kaya hindi mo na kailangang manu-manong habulin ang bawat ani. Ang Auto Buy ay sumusuporta sa paglago ng iyong negosyo sa pamamagitan ng awtomatikong pagbili ng mga kinakailangang item, habang ang Auto Upgrade ay nagpapahusay sa daloy ng kita sa pamamagitan ng pag-aaplay ng mga pagpapabuti nang walang patuloy na pagbabantay.

Para sa mga manlalaro na nasisiyahan sa panonood ng kanilang kita na lumalaki, ang mga script na ito ay magpapasimple sa pangkalahatang karanasan sa paglalaro. Dahil ang Sell Lemons ay mayroon nang offline earning mechanics, ang pagsasama nito sa automation ay maaaring gawing mas mabilis at mas epektibo ang pagbuo ng isang malaking lemon empire.

TAMPOK
FUNKSIYON
Auto Collect Cash Drops
Awtomatikong kumukuha ng pera
Auto Click Stand 
Awtomatikong nagki-click sa stand
Auto Harvest Vine
Awtomatikong kumukuha ng ubas 
Auto Complete Tycoon
Awtomatikong ina-unlock ang lahat ng base improvements
Auto Upgrade 
Ina-upgrade ang kiosk
Auto Collect Lemons Tree
Awtomatikong kumukuha ng mga puno ng lemon
Teleport
Nagdadala sa iyo sa mga pangunahing punto ng mapa: winery, UFO, sewer, aliens, altar
Pull All Levelers
Hinahatak ang lahat ng levers
Working Script Sell Lemons
Working Script Sell Lemons

Bakit Maaaring Hindi Gumagana ang Sell Lemons Scripts

Mga Code para sa Run a Restaurant (Hunyo 2026)
Mga Code para sa Run a Restaurant (Hunyo 2026)   
Guides

Hindi Pagkakatugma sa Mga Kamakailang Update ng Laro

Isa sa mga karaniwang dahilan ng pagkabigo ay ang paggamit ng isang lumang script na hindi na tumutugma sa kasalukuyang bersyon ng Be Flash For Brainrots. Pagkatapos ng mga update, maaaring magbago ang internal systems ng laro, mga pangalan ng elemento, paraan ng interaksyon, at ang pangkalahatang lohika ng ilang mga function.

Dahil sa mga ganitong pagbabago, ang isang script na dati ay tumatakbo nang walang problema ay maaaring mag-behave nang hindi inaasahan. Halimbawa, ang ilang mga tampok ay maaaring gumana nang normal, habang ang iba ay humihinto sa pagtugon, nag-freeze, o nagdudulot ng mga error. Kung ang isang script ay hindi na-update ng developer sa mahabang panahon, karaniwang walang saysay na subukan itong patakbuhin. Sa ganitong mga kaso, mas mabuting lumipat sa ibang opsyon mula sa isang maaasahan at napatunayang seleksyon.

Malfunction ng Executor

Minsan ang problema ay hindi sa script mismo kundi sa programang nagpapatakbo nito. Ang mga executor ay may iba't ibang antas ng compatibility: ang ilan ay mas mahusay sa paghawak ng mga kumplikadong utos, habang ang iba ay maaaring hindi sumusuporta sa ilang mga library, tampok, o paraan ng pagpapatupad.

Iyon ang dahilan kung bakit ang parehong script ay maaaring gumana nang matatag sa isang executor at agad na mabigo sa isa pa. Ito ay lalo na totoo para sa mga tool na may limitadong suporta, tulad ng Xeno o SOLAR: maaaring hindi nila ganap na patakbuhin ang script o hindi makilala ang ilang bahagi nito. Madalas na pinipili ang Xeno para sa pagiging simple nito at mabilis na pagsisimula, ngunit sa kaso ng mga error, sulit na subukan ang parehong script sa ibang executor.

Pag-disconnect mula sa Server Pagkatapos ng Paglunsad

Isa pang karaniwang sitwasyon ay kapag, pagkatapos i-activate ang script, agad na nagdi-disconnect ang laro mula sa server o nagpapakita ng error message. Maaaring mangyari ito dahil sa isang conflict sa pagitan ng script at ng kasalukuyang bersyon ng Sell Lemons, mga binagong internal game mechanics, o tugon ng anti-cheat system.

Sa simula, maaari mong subukang bumalik sa server para tingnan kung ang isyu ay isang beses lang na pangyayari. Ngunit kung ang pag-disconnect ay nangyayari sa tuwing pagkatapos ng paglunsad, malamang na ang script ay hindi na compatible sa laro o nagti-trigger ng mga mekanismong proteksiyon. Sa ganitong sitwasyon, mas ligtas na itigil ang paggamit nito upang maiwasan ang patuloy na pagkabigo, hindi matatag na performance, at ang panganib ng mga restriction sa account.

Karagdagang nilalaman na available
Pumunta sa Twitter bo3.gg
Mga Komento
Ayon sa petsa