[{"data":1,"prerenderedAt":1097},["ShallowReactive",2],{"navigation":3,"\u002Fbooki-documentation\u002Fguides\u002Fguides-customer-payments":303,"\u002Fbooki-documentation\u002Fguides\u002Fguides-customer-payments-surround":1092},[4,55,105],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":54},"Nuxt Guide","i-lucide-layout","\u002Fnuxt-guide","1.nuxt-guide",[10,14,19,24,29,34,39,44,49],{"title":11,"path":12,"stem":13,"icon":6},"Overview","\u002Fnuxt-guide\u002Foverview","1.nuxt-guide\u002F1.overview",{"title":15,"path":16,"stem":17,"icon":18},"Folder Structure","\u002Fnuxt-guide\u002Ffolder-structure","1.nuxt-guide\u002F2.folder-structure","i-lucide-folder-tree",{"title":20,"path":21,"stem":22,"icon":23},"Components","\u002Fnuxt-guide\u002Fcomponents","1.nuxt-guide\u002F3.components","i-lucide-component",{"title":25,"path":26,"stem":27,"icon":28},"Composables","\u002Fnuxt-guide\u002Fcomposables","1.nuxt-guide\u002F4.composables","i-lucide-puzzle",{"title":30,"path":31,"stem":32,"icon":33},"Pages & Routing","\u002Fnuxt-guide\u002Fpages-routing","1.nuxt-guide\u002F5.pages-routing","i-lucide-file-text",{"title":35,"path":36,"stem":37,"icon":38},"Middleware","\u002Fnuxt-guide\u002Fmiddleware","1.nuxt-guide\u002F6.middleware","i-lucide-shield-check",{"title":40,"path":41,"stem":42,"icon":43},"Plugins","\u002Fnuxt-guide\u002Fplugins","1.nuxt-guide\u002F7.plugins","i-lucide-plug",{"title":45,"path":46,"stem":47,"icon":48},"State Management","\u002Fnuxt-guide\u002Fstate-management","1.nuxt-guide\u002F8.state-management","i-lucide-database",{"title":50,"path":51,"stem":52,"icon":53},"TypeScript","\u002Fnuxt-guide\u002Ftypescript","1.nuxt-guide\u002F9.typescript","i-lucide-braces",false,{"title":56,"icon":57,"path":58,"stem":59,"children":60,"page":54},"Node \u002F Express Guide","i-lucide-server","\u002Fnode-express-guide","2.node-express-guide",[61,64,69,72,77,82,86,91,96,100],{"title":11,"path":62,"stem":63,"icon":57},"\u002Fnode-express-guide\u002Foverview","2.node-express-guide\u002F1.overview",{"title":65,"path":66,"stem":67,"icon":68},"Error Handling","\u002Fnode-express-guide\u002Ferror-handling","2.node-express-guide\u002F10.error-handling","i-lucide-alert-triangle",{"title":15,"path":70,"stem":71,"icon":18},"\u002Fnode-express-guide\u002Ffolder-structure","2.node-express-guide\u002F2.folder-structure",{"title":73,"path":74,"stem":75,"icon":76},"Controllers","\u002Fnode-express-guide\u002Fcontrollers","2.node-express-guide\u002F3.controllers","i-lucide-cpu",{"title":78,"path":79,"stem":80,"icon":81},"Services","\u002Fnode-express-guide\u002Fservices","2.node-express-guide\u002F4.services","i-lucide-workflow",{"title":83,"path":84,"stem":85,"icon":48},"Repositories","\u002Fnode-express-guide\u002Frepositories","2.node-express-guide\u002F5.repositories",{"title":87,"path":88,"stem":89,"icon":90},"Models","\u002Fnode-express-guide\u002Fmodels","2.node-express-guide\u002F6.models","i-lucide-boxes",{"title":92,"path":93,"stem":94,"icon":95},"Routes","\u002Fnode-express-guide\u002Froutes","2.node-express-guide\u002F7.routes","i-lucide-route",{"title":35,"path":97,"stem":98,"icon":99},"\u002Fnode-express-guide\u002Fmiddleware","2.node-express-guide\u002F8.middleware","i-lucide-shield",{"title":101,"path":102,"stem":103,"icon":104},"Validation","\u002Fnode-express-guide\u002Fvalidation","2.node-express-guide\u002F9.validation","i-lucide-check-circle",{"title":106,"icon":107,"path":108,"stem":109,"children":110,"page":54},"Booki Documentation","i-lucide-book-open","\u002Fbooki-documentation","3.booki-documentation",[111,115,120,125,130,229,244,257],{"title":112,"path":113,"stem":114,"icon":107},"Project Overview","\u002Fbooki-documentation\u002Foverview","3.booki-documentation\u002F1.overview",{"title":116,"path":117,"stem":118,"icon":119},"Installation","\u002Fbooki-documentation\u002F1.installation","3.booki-documentation\u002F2.1.installation","i-lucide-download",{"title":121,"path":122,"stem":123,"icon":124},"Development Overview","\u002Fbooki-documentation\u002F2.architecture","3.booki-documentation\u002F2.2.architecture","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Local Development","\u002Fbooki-documentation\u002F3.local-development","3.booki-documentation\u002F2.3.local-development","i-lucide-monitor",{"title":131,"icon":57,"path":132,"stem":133,"children":134,"page":54},"API","\u002Fbooki-documentation\u002Fapi","3.booki-documentation\u002F3.api",[135,139,144,149,154,159,163,168,173,178,183,188,192,197,202,206,211,216,220,224],{"title":136,"path":137,"stem":138,"icon":57},"Booki API Reference","\u002Fbooki-documentation\u002Fapi\u002Fbooki-api","3.booki-documentation\u002F3.api\u002F1.booki-api",{"title":140,"path":141,"stem":142,"icon":143},"Auth - Login & Refresh","\u002Fbooki-documentation\u002Fapi\u002Fauth","3.booki-documentation\u002F3.api\u002F2.auth","i-lucide-key",{"title":145,"path":146,"stem":147,"icon":148},"Auth - Customer Registration","\u002Fbooki-documentation\u002Fapi\u002Fauth-customer-register","3.booki-documentation\u002F3.api\u002F2.auth-customer-register","i-lucide-user-check",{"title":150,"path":151,"stem":152,"icon":153},"Auth - Owner Registration","\u002Fbooki-documentation\u002Fapi\u002Fauth-owner-register","3.booki-documentation\u002F3.api\u002F2.auth-owner-register","i-lucide-user-plus",{"title":155,"path":156,"stem":157,"icon":158},"Bookings","\u002Fbooki-documentation\u002Fapi\u002Fbookings","3.booki-documentation\u002F3.api\u002F3.bookings","i-lucide-calendar-check",{"title":160,"path":161,"stem":162,"icon":158},"Bookings - Authenticated","\u002Fbooki-documentation\u002Fapi\u002Fbookings-auth","3.booki-documentation\u002F3.api\u002F3.bookings-auth",{"title":164,"path":165,"stem":166,"icon":167},"Bookings - Public & Guest","\u002Fbooki-documentation\u002Fapi\u002Fbookings-public","3.booki-documentation\u002F3.api\u002F3.bookings-public","i-lucide-calendar-plus",{"title":169,"path":170,"stem":171,"icon":172},"Booking Services","\u002Fbooki-documentation\u002Fapi\u002Fbooking-services","3.booki-documentation\u002F3.api\u002F4.booking-services","i-lucide-box",{"title":174,"path":175,"stem":176,"icon":177},"Organizations - Branches","\u002Fbooki-documentation\u002Fapi\u002Fbranches","3.booki-documentation\u002F3.api\u002F5.branches","i-lucide-git-branch",{"title":179,"path":180,"stem":181,"icon":182},"Organizations - Business Hours","\u002Fbooki-documentation\u002Fapi\u002Fbusiness-hours","3.booki-documentation\u002F3.api\u002F5.business-hours","i-lucide-clock",{"title":184,"path":185,"stem":186,"icon":187},"Organizations - Base","\u002Fbooki-documentation\u002Fapi\u002Forganizations","3.booki-documentation\u002F3.api\u002F5.organizations","i-lucide-building-2",{"title":189,"path":190,"stem":191,"icon":172},"Organizations - Packages","\u002Fbooki-documentation\u002Fapi\u002Fpackages","3.booki-documentation\u002F3.api\u002F5.packages",{"title":193,"path":194,"stem":195,"icon":196},"Organizations - Payments & Integrations","\u002Fbooki-documentation\u002Fapi\u002Fpayments","3.booki-documentation\u002F3.api\u002F5.payments","i-lucide-credit-card",{"title":198,"path":199,"stem":200,"icon":201},"Users - Profile & Settings","\u002Fbooki-documentation\u002Fapi\u002Fusers","3.booki-documentation\u002F3.api\u002F6.users","i-lucide-user",{"title":203,"path":204,"stem":205,"icon":196},"Maya Payments","\u002Fbooki-documentation\u002Fapi\u002Fmaya","3.booki-documentation\u002F3.api\u002F7.maya",{"title":207,"path":208,"stem":209,"icon":210},"Owner - Booking Management","\u002Fbooki-documentation\u002Fapi\u002Fowner-bookings","3.booki-documentation\u002F3.api\u002F7.owner-bookings","i-lucide-calendar",{"title":212,"path":213,"stem":214,"icon":215},"Owner - Customer Management","\u002Fbooki-documentation\u002Fapi\u002Fowner-customers","3.booki-documentation\u002F3.api\u002F7.owner-customers","i-lucide-users",{"title":217,"path":218,"stem":219,"icon":196},"Admin - Billing & Subscriptions","\u002Fbooki-documentation\u002Fapi\u002Fadmin-billing","3.booki-documentation\u002F3.api\u002F8.admin-billing",{"title":221,"path":222,"stem":223,"icon":187},"Admin - Organizations Management","\u002Fbooki-documentation\u002Fapi\u002Fadmin-organizations","3.booki-documentation\u002F3.api\u002F8.admin-organizations",{"title":225,"path":226,"stem":227,"icon":228},"Admin - User Management","\u002Fbooki-documentation\u002Fapi\u002Fadmin-users","3.booki-documentation\u002F3.api\u002F8.admin-users","i-lucide-shield-admin",{"title":230,"icon":231,"path":232,"stem":233,"children":234,"page":54},"Shared","i-lucide-package","\u002Fbooki-documentation\u002Fshared","3.booki-documentation\u002F4.shared",[235,240],{"title":236,"path":237,"stem":238,"icon":239},"codi-node-utils","\u002Fbooki-documentation\u002Fshared\u002Fcodi-node-utils","3.booki-documentation\u002F4.shared\u002F1.codi-node-utils","i-lucide-wrench",{"title":241,"path":242,"stem":243,"icon":124},"codi-layer","\u002Fbooki-documentation\u002Fshared\u002Fcodi-layer","3.booki-documentation\u002F4.shared\u002F2.codi-layer",{"title":245,"path":246,"stem":247,"children":248,"page":54},"Flowcharts","\u002Fbooki-documentation\u002Fflowcharts","3.booki-documentation\u002F5.flowcharts",[249,253],{"title":250,"path":251,"stem":252,"icon":158},"Owner Booking Management Flow","\u002Fbooki-documentation\u002Fflowcharts\u002Fowner-booking-management","3.booki-documentation\u002F5.flowcharts\u002F1.owner-booking-management",{"title":254,"path":255,"stem":256,"icon":167},"Customer Booking Flow","\u002Fbooki-documentation\u002Fflowcharts\u002Fcustomer-booking-flow","3.booki-documentation\u002F5.flowcharts\u002F2.customer-booking-flow",{"title":258,"path":259,"stem":260,"children":261,"page":54},"Guides","\u002Fbooki-documentation\u002Fguides","3.booki-documentation\u002Fguides",[262,267,271,275,280,285,290,294,298],{"title":263,"path":264,"stem":265,"icon":266},"Guide - Authentication Flow & Sessions","\u002Fbooki-documentation\u002Fguides\u002Fguides-auth-flow","3.booki-documentation\u002Fguides\u002Fguides-auth-flow","i-lucide-lock",{"title":268,"path":269,"stem":270,"icon":177},"Guide - Branch Management","\u002Fbooki-documentation\u002Fguides\u002Fguides-branch-management","3.booki-documentation\u002Fguides\u002Fguides-branch-management",{"title":272,"path":273,"stem":274,"icon":196},"Guide - Customer Payment Methods","\u002Fbooki-documentation\u002Fguides\u002Fguides-customer-payments","3.booki-documentation\u002Fguides\u002Fguides-customer-payments",{"title":276,"path":277,"stem":278,"icon":279},"Guide - Environment Setup","\u002Fbooki-documentation\u002Fguides\u002Fguides-environment-setup","3.booki-documentation\u002Fguides\u002Fguides-environment-setup","i-lucide-settings",{"title":281,"path":282,"stem":283,"icon":284},"Guide - Common Error Responses","\u002Fbooki-documentation\u002Fguides\u002Fguides-errors","3.booki-documentation\u002Fguides\u002Fguides-errors","i-lucide-alert-circle",{"title":286,"path":287,"stem":288,"icon":289},"Guide - Gmail SMTP Setup","\u002Fbooki-documentation\u002Fguides\u002Fguides-gmail-setup","3.booki-documentation\u002Fguides\u002Fguides-gmail-setup","i-lucide-mail",{"title":291,"path":292,"stem":293,"icon":124},"Guide - Multi-Tenancy & Tenant Slug Resolution","\u002Fbooki-documentation\u002Fguides\u002Fguides-multi-tenancy","3.booki-documentation\u002Fguides\u002Fguides-multi-tenancy",{"title":295,"path":296,"stem":297,"icon":48},"Guide - Redis Caching","\u002Fbooki-documentation\u002Fguides\u002Fguides-redis","3.booki-documentation\u002Fguides\u002Fguides-redis",{"title":299,"path":300,"stem":301,"icon":302},"Guide - Subscription Billing","\u002Fbooki-documentation\u002Fguides\u002Fguides-subscription-billing","3.booki-documentation\u002Fguides\u002Fguides-subscription-billing","i-lucide-receipt",{"id":304,"title":272,"body":305,"description":1085,"extension":1086,"links":1087,"meta":1088,"navigation":1089,"path":273,"seo":1090,"stem":274,"__hash__":1091},"docs\u002F3.booki-documentation\u002Fguides\u002Fguides-customer-payments.md",{"type":306,"value":307,"toc":1069},"minimark",[308,325,328,333,344,349,430,442,456,458,462,465,475,478,480,484,499,503,524,529,573,575,579,593,597,700,706,708,712,726,738,742,770,772,776,782,836,844,846,850,853,885,891,938,942,953,968,972,1044,1046,1050,1065],[309,310,311,312,316,317,320,321,324],"p",{},"Logged-in ",[313,314,315],"code",{},"CUSTOMER"," users can save a Maya payment method for faster checkout. Guest users always pay one-time. The system also lets customers set a preferred payment type (",[313,318,319],{},"maya"," or ",[313,322,323],{},"cash","), validated against what the organization has enabled.",[326,327],"hr",{},[329,330,332],"h2",{"id":331},"architecture","Architecture",[309,334,335,336,340,341,343],{},"Payment method fields are stored ",[337,338,339],"strong",{},"directly on the user document"," — no separate collection. This keeps the data model simple since payment methods are user-specific attributes and only ",[313,342,315],{}," users need them.",[345,346,348],"h3",{"id":347},"user-model-fields","User Model Fields",[350,351,352,368],"table",{},[353,354,355],"thead",{},[356,357,358,362,365],"tr",{},[359,360,361],"th",{},"Field",[359,363,364],{},"Type",[359,366,367],{},"Description",[369,370,371,385,398,410],"tbody",{},[356,372,373,379,382],{},[374,375,376],"td",{},[313,377,378],{},"defaultPaymentMethodId",[374,380,381],{},"string?",[374,383,384],{},"Internal marker set when a Maya payment method is saved",[356,386,387,392,395],{},[374,388,389],{},[313,390,391],{},"hasPaymentMethod",[374,393,394],{},"boolean?",[374,396,397],{},"Quick flag — true if user has a saved Maya payment method",[356,399,400,405,407],{},[374,401,402],{},[313,403,404],{},"mayaCustomerId",[374,406,381],{},[374,408,409],{},"Maya customer ID, created on first Maya checkout",[356,411,412,417,427],{},[374,413,414],{},[313,415,416],{},"preferredPaymentMethod",[374,418,419,422,423,426],{},[313,420,421],{},"\"maya\""," | ",[313,424,425],{},"\"cash\"","?",[374,428,429],{},"The customer's preferred payment type",[431,432,433],"blockquote",{},[309,434,435,437,438,441],{},[313,436,416],{}," is the ",[337,439,440],{},"type"," (cash vs Maya), not a reference to a stored card. Both can coexist: a customer can prefer Maya and also have it saved as their payment method.",[309,443,444,445,448,449,451,452,455],{},"All payment method endpoints are under ",[313,446,447],{},"\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods"," and require ",[313,450,315],{}," role. Non-customer users receive ",[313,453,454],{},"403 Forbidden",".",[326,457],{},[329,459,461],{"id":460},"maya-payment-method-flow","Maya Payment Method Flow",[309,463,464],{},"Adding a payment method works as follows:",[466,467,472],"pre",{"className":468,"code":470,"language":471},[469],"language-text","1. Frontend calls POST \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002Fsetup\n        ↓\n2. API sets hasPaymentMethod: true on the user document\n        ↓\n3. API returns a confirmation message\n        ↓\n4. On each booking payment, frontend calls POST \u002Fapi\u002Fv1\u002Fmaya\u002Fbookings\u002F:id\u002Fcheckout-session\n        ↓\n5. Maya creates the customer entry (mayaCustomerId) on the first checkout\n","text",[313,473,470],{"__ignoreMap":474},"",[309,476,477],{},"There is no card tokenization or stored card number — Maya handles the checkout flow entirely.",[326,479],{},[329,481,483],{"id":482},"api-endpoints","API Endpoints",[309,485,486,487,455,489,492,495,496,498],{},"All endpoints under ",[313,488,447],{},[490,491],"br",{},[337,493,494],{},"Auth:"," Bearer token, ",[313,497,315],{}," role only.",[345,500,502],{"id":501},"setup-save-maya-payment-method","Setup — Save Maya Payment Method",[466,504,508],{"className":505,"code":506,"language":507,"meta":474,"style":474},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","POST \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002Fsetup\nAuthorization: Bearer \u003Ccustomer_token>\n","http",[313,509,510,518],{"__ignoreMap":474},[511,512,515],"span",{"class":513,"line":514},"line",1,[511,516,517],{},"POST \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002Fsetup\n",[511,519,521],{"class":513,"line":520},2,[511,522,523],{},"Authorization: Bearer \u003Ccustomer_token>\n",[309,525,526],{},[337,527,528],{},"Response (200):",[466,530,534],{"className":531,"code":532,"language":533,"meta":474,"style":474},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"message\": \"Payment method preference updated. You will be redirected to Maya Checkout for each payment.\"\n}\n","json",[313,535,536,542,567],{"__ignoreMap":474},[511,537,538],{"class":513,"line":514},[511,539,541],{"class":540},"sMK4o","{\n",[511,543,544,547,551,554,557,560,564],{"class":513,"line":520},[511,545,546],{"class":540},"  \"",[511,548,550],{"class":549},"spNyl","message",[511,552,553],{"class":540},"\"",[511,555,556],{"class":540},":",[511,558,559],{"class":540}," \"",[511,561,563],{"class":562},"sfazB","Payment method preference updated. You will be redirected to Maya Checkout for each payment.",[511,565,566],{"class":540},"\"\n",[511,568,570],{"class":513,"line":569},3,[511,571,572],{"class":540},"}\n",[326,574],{},[345,576,578],{"id":577},"list-payment-methods","List Payment Methods",[466,580,582],{"className":505,"code":581,"language":507,"meta":474,"style":474},"GET \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\nAuthorization: Bearer \u003Ccustomer_token>\n",[313,583,584,589],{"__ignoreMap":474},[511,585,586],{"class":513,"line":514},[511,587,588],{},"GET \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\n",[511,590,591],{"class":513,"line":520},[511,592,523],{},[309,594,595],{},[337,596,528],{},[466,598,600],{"className":531,"code":599,"language":533,"meta":474,"style":474},"{\n  \"paymentMethods\": [\n    {\n      \"id\": \"maya-checkout\",\n      \"type\": \"maya\",\n      \"isDefault\": true\n    }\n  ]\n}\n",[313,601,602,606,620,625,649,668,683,689,695],{"__ignoreMap":474},[511,603,604],{"class":513,"line":514},[511,605,541],{"class":540},[511,607,608,610,613,615,617],{"class":513,"line":520},[511,609,546],{"class":540},[511,611,612],{"class":549},"paymentMethods",[511,614,553],{"class":540},[511,616,556],{"class":540},[511,618,619],{"class":540}," [\n",[511,621,622],{"class":513,"line":569},[511,623,624],{"class":540},"    {\n",[511,626,628,631,635,637,639,641,644,646],{"class":513,"line":627},4,[511,629,630],{"class":540},"      \"",[511,632,634],{"class":633},"sBMFI","id",[511,636,553],{"class":540},[511,638,556],{"class":540},[511,640,559],{"class":540},[511,642,643],{"class":562},"maya-checkout",[511,645,553],{"class":540},[511,647,648],{"class":540},",\n",[511,650,652,654,656,658,660,662,664,666],{"class":513,"line":651},5,[511,653,630],{"class":540},[511,655,440],{"class":633},[511,657,553],{"class":540},[511,659,556],{"class":540},[511,661,559],{"class":540},[511,663,319],{"class":562},[511,665,553],{"class":540},[511,667,648],{"class":540},[511,669,671,673,676,678,680],{"class":513,"line":670},6,[511,672,630],{"class":540},[511,674,675],{"class":633},"isDefault",[511,677,553],{"class":540},[511,679,556],{"class":540},[511,681,682],{"class":540}," true\n",[511,684,686],{"class":513,"line":685},7,[511,687,688],{"class":540},"    }\n",[511,690,692],{"class":513,"line":691},8,[511,693,694],{"class":540},"  ]\n",[511,696,698],{"class":513,"line":697},9,[511,699,572],{"class":540},[309,701,702,703,705],{},"Returns an empty ",[313,704,612],{}," array if no payment method is saved.",[326,707],{},[345,709,711],{"id":710},"delete-payment-method","Delete Payment Method",[466,713,715],{"className":505,"code":714,"language":507,"meta":474,"style":474},"DELETE \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002F:paymentMethodId\nAuthorization: Bearer \u003Ccustomer_token>\n",[313,716,717,722],{"__ignoreMap":474},[511,718,719],{"class":513,"line":514},[511,720,721],{},"DELETE \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002F:paymentMethodId\n",[511,723,724],{"class":513,"line":520},[511,725,523],{},[309,727,728,729,731,732,735,736,455],{},"Removes the Maya payment method from the user. Sets ",[313,730,391],{}," to ",[313,733,734],{},"false"," and clears ",[313,737,378],{},[309,739,740],{},[337,741,528],{},[466,743,745],{"className":531,"code":744,"language":533,"meta":474,"style":474},"{ \"message\": \"Payment method deleted.\" }\n",[313,746,747],{"__ignoreMap":474},[511,748,749,752,754,756,758,760,762,765,767],{"class":513,"line":514},[511,750,751],{"class":540},"{",[511,753,559],{"class":540},[511,755,550],{"class":549},[511,757,553],{"class":540},[511,759,556],{"class":540},[511,761,559],{"class":540},[511,763,764],{"class":562},"Payment method deleted.",[511,766,553],{"class":540},[511,768,769],{"class":540}," }\n",[326,771],{},[329,773,775],{"id":774},"payment-preference-endpoints","Payment Preference Endpoints",[309,777,778,779,781],{},"Separate from saved payment methods — this manages the customer's preferred ",[337,780,440],{}," of payment.",[466,783,785],{"className":505,"code":784,"language":507,"meta":474,"style":474},"# Get current preference\nGET \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference\nAuthorization: Bearer \u003Ccustomer_token>\n\n# Update preference\nPUT \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference\nAuthorization: Bearer \u003Ccustomer_token>\nContent-Type: application\u002Fjson\n\n{ \"preferredPaymentMethod\": \"maya\" }\n",[313,786,787,792,797,801,807,812,817,821,826,830],{"__ignoreMap":474},[511,788,789],{"class":513,"line":514},[511,790,791],{},"# Get current preference\n",[511,793,794],{"class":513,"line":520},[511,795,796],{},"GET \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference\n",[511,798,799],{"class":513,"line":569},[511,800,523],{},[511,802,803],{"class":513,"line":627},[511,804,806],{"emptyLinePlaceholder":805},true,"\n",[511,808,809],{"class":513,"line":651},[511,810,811],{},"# Update preference\n",[511,813,814],{"class":513,"line":670},[511,815,816],{},"PUT \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference\n",[511,818,819],{"class":513,"line":685},[511,820,523],{},[511,822,823],{"class":513,"line":691},[511,824,825],{},"Content-Type: application\u002Fjson\n",[511,827,828],{"class":513,"line":697},[511,829,806],{"emptyLinePlaceholder":805},[511,831,833],{"class":513,"line":832},10,[511,834,835],{},"{ \"preferredPaymentMethod\": \"maya\" }\n",[309,837,838,839,841,842],{},"Valid values: ",[313,840,421],{},", ",[313,843,425],{},[326,845],{},[329,847,849],{"id":848},"organization-payment-method-validation","Organization Payment Method Validation",[309,851,852],{},"Organizations control which payment types are available via two flags:",[350,854,855,863],{},[353,856,857],{},[356,858,859,861],{},[359,860,361],{},[359,862,367],{},[369,864,865,875],{},[356,866,867,872],{},[374,868,869],{},[313,870,871],{},"mayaConnected",[374,873,874],{},"Enables online Maya payments",[356,876,877,882],{},[374,878,879],{},[313,880,881],{},"cashConnected",[374,883,884],{},"Enables cash on arrival",[309,886,887,888,890],{},"When creating a booking, the API validates that the customer's ",[313,889,416],{}," is enabled for the organization. Invalid choices return an error with the list of available methods:",[466,892,894],{"className":531,"code":893,"language":533,"meta":474,"style":474},"{\n  \"statusCode\": 400,\n  \"message\": \"Payment method 'cash' is not available. Available methods: maya\"\n}\n",[313,895,896,900,917,934],{"__ignoreMap":474},[511,897,898],{"class":513,"line":514},[511,899,541],{"class":540},[511,901,902,904,907,909,911,915],{"class":513,"line":520},[511,903,546],{"class":540},[511,905,906],{"class":549},"statusCode",[511,908,553],{"class":540},[511,910,556],{"class":540},[511,912,914],{"class":913},"sbssI"," 400",[511,916,648],{"class":540},[511,918,919,921,923,925,927,929,932],{"class":513,"line":569},[511,920,546],{"class":540},[511,922,550],{"class":549},[511,924,553],{"class":540},[511,926,556],{"class":540},[511,928,559],{"class":540},[511,930,931],{"class":562},"Payment method 'cash' is not available. Available methods: maya",[511,933,566],{"class":540},[511,935,936],{"class":513,"line":627},[511,937,572],{"class":540},[345,939,941],{"id":940},"check-available-methods-public","Check Available Methods (Public)",[309,943,944,945,948,949,952],{},"Uses tenant middleware — ",[313,946,947],{},"organizationId"," is resolved from the ",[313,950,951],{},"X-Tenant"," header or subdomain, not a URL parameter.",[466,954,956],{"className":505,"code":955,"language":507,"meta":474,"style":474},"GET \u002Fapi\u002Fv1\u002Forganizations\u002Fpayments\u002Favailable-methods\nX-Tenant: \u003Corganization-slug>\n",[313,957,958,963],{"__ignoreMap":474},[511,959,960],{"class":513,"line":514},[511,961,962],{},"GET \u002Fapi\u002Fv1\u002Forganizations\u002Fpayments\u002Favailable-methods\n",[511,964,965],{"class":513,"line":520},[511,966,967],{},"X-Tenant: \u003Corganization-slug>\n",[309,969,970],{},[337,971,528],{},[466,973,975],{"className":531,"code":974,"language":533,"meta":474,"style":474},"{\n  \"availablePaymentMethods\": [\"maya\", \"cash\"],\n  \"mayaEnabled\": true,\n  \"cashEnabled\": true\n}\n",[313,976,977,981,1013,1027,1040],{"__ignoreMap":474},[511,978,979],{"class":513,"line":514},[511,980,541],{"class":540},[511,982,983,985,988,990,992,995,997,999,1001,1004,1006,1008,1010],{"class":513,"line":520},[511,984,546],{"class":540},[511,986,987],{"class":549},"availablePaymentMethods",[511,989,553],{"class":540},[511,991,556],{"class":540},[511,993,994],{"class":540}," [",[511,996,553],{"class":540},[511,998,319],{"class":562},[511,1000,553],{"class":540},[511,1002,1003],{"class":540},",",[511,1005,559],{"class":540},[511,1007,323],{"class":562},[511,1009,553],{"class":540},[511,1011,1012],{"class":540},"],\n",[511,1014,1015,1017,1020,1022,1024],{"class":513,"line":569},[511,1016,546],{"class":540},[511,1018,1019],{"class":549},"mayaEnabled",[511,1021,553],{"class":540},[511,1023,556],{"class":540},[511,1025,1026],{"class":540}," true,\n",[511,1028,1029,1031,1034,1036,1038],{"class":513,"line":627},[511,1030,546],{"class":540},[511,1032,1033],{"class":549},"cashEnabled",[511,1035,553],{"class":540},[511,1037,556],{"class":540},[511,1039,682],{"class":540},[511,1041,1042],{"class":513,"line":651},[511,1043,572],{"class":540},[326,1045],{},[329,1047,1049],{"id":1048},"related","Related",[1051,1052,1053,1060],"ul",{},[1054,1055,1056],"li",{},[1057,1058,193],"a",{"href":1059},"..\u002Fapi\u002Fpayments",[1054,1061,1062],{},[1057,1063,203],{"href":1064},"..\u002Fapi\u002Fmaya",[1066,1067,1068],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":474,"searchDepth":514,"depth":520,"links":1070},[1071,1074,1075,1080,1081,1084],{"id":331,"depth":520,"text":332,"children":1072},[1073],{"id":347,"depth":569,"text":348},{"id":460,"depth":520,"text":461},{"id":482,"depth":520,"text":483,"children":1076},[1077,1078,1079],{"id":501,"depth":569,"text":502},{"id":577,"depth":569,"text":578},{"id":710,"depth":569,"text":711},{"id":774,"depth":520,"text":775},{"id":848,"depth":520,"text":849,"children":1082},[1083],{"id":940,"depth":569,"text":941},{"id":1048,"depth":520,"text":1049},"How customers save and manage Maya payment methods in booki-api, including payment preferences and organization-level payment method validation.","md",null,{},{"icon":196},{"title":272,"description":1085},"hCe3UXn1PS6IHls_9-GasSAsyAZZhR8fZeE6G7dBi_4",[1093,1095],{"title":268,"path":269,"stem":270,"description":1094,"icon":177,"children":-1},"Invite-based branch creation flow, branch status lifecycle, and API endpoints for managing multi-branch organizations in booki-api.",{"title":276,"path":277,"stem":278,"description":1096,"icon":279,"children":-1},"How to configure all required environment variables for booki-api including Redis, Maya, Google OAuth, Gmail SMTP, and MongoDB.",1777787844708]