# Musqet docs

How to run your business on Musqet: take card and Bitcoin payments, manage your terminals and team, hold your bitcoin, and build on the API.

Every page on this site is available as markdown. Append `.md` to any page URL,
or send `Accept: text/markdown` and the same URL returns its source. Responses
carry `Vary: Accept`, so both variants are safe to cache.

One exception: `/` returns this map rather than the landing page, since the map
is the more useful thing to hand an agent first. Every other page returns its
own source.

Pages are listed with the anchors they declare, so you can match what someone is
seeing to a page without opening any of them: the routes and screens it explains,
the error codes and statuses a reader might arrive holding, the symptoms in the
words a merchant would use, and what has to be true before they can act. Status
says how finished a page is: trust a `stub` less than a `complete` one. Each page
carries the same anchors in its own frontmatter.

## Pages

### Account Security

- [Account security](/account-security/your-account-security) ([markdown](/account-security/your-account-security.md)). Signing in, your password, two-factor authentication, lockouts and your sign-in history. How to keep your own Musqet login safe, and what to do when you cannot get in.
  - Status: partial
  - Routes:
    - "Sign in"
    - "Settings, for your password, two-factor authentication, passkeys and sign-in history"
    - "Forgot password"
    - "Reset password"
    - "Verify email"
  - Error codes:
    - "EMAIL_NOT_VERIFIED"
    - "EMAIL_VERIFICATION_TOKEN_NOT_FOUND"
    - "EMAIL_ALREADY_VERIFIED"
  - Symptoms:
    - "How do I sign in"
    - "I forgot my password"
    - "The password reset link does not work"
    - "How do I change my password"
    - "I am locked out of my account"
    - "How long does the lockout last"
    - "Why does it say too many requests when I sign in"
    - "Everyone in the office is being blocked from signing in"
    - "How do I turn on two-factor authentication"
    - "I lost my authenticator app"
    - "What are backup codes for"
    - "How do I add a passkey"
    - "Can I sign in with a passkey instead of a code"
    - "Can I use two-factor authentication without an authenticator app"
    - "How do I remove my authenticator app"
    - "Why is it asking for my password again"
    - "How do I see where my account has been signed in"
    - "How do I change my email address"
    - "How do I change the language"
  - Preconditions:
    - "Your email address and password, to sign in"
    - "An authenticator app on your phone, or a passkey, to use two-factor authentication"

### Bitcoin Treasury

- [Bitcoin treasury](/bitcoin-treasury/holding-your-bitcoin) ([markdown](/bitcoin-treasury/holding-your-bitcoin.md)). How your business holds and manages the bitcoin it takes. Choose a wallet you control, connect your own wallet or an exchange, sell for pounds, withdraw, and back up your keys.
  - Status: partial
  - Routes:
    - "Exchange"
    - "Connected wallet"
    - "Withdraw"
    - "Wallet, in the merchant app"
  - Symptoms:
    - "How is my business bitcoin held"
    - "How do I set up a bitcoin wallet for my business"
    - "How do I back up my bitcoin wallet"
    - "What happens if I lose my recovery phrase"
    - "How do I sell my bitcoin for pounds"
    - "How do I withdraw or send my bitcoin"
    - "How do I move from a Lightning node to a Spark wallet"
  - Preconditions:
    - "Bitcoin switched on for your business"
    - "Manage bitcoin permission, to set up and manage a wallet or exchange"
    - "Withdraw permission, to move funds out"

### Developers

- [The Musqet developer platform](/developers/developer-platform) ([markdown](/developers/developer-platform.md)). Call the Musqet API from your own code. Create an API key, authenticate a request, read the errors, and have Musqet send you a webhook when a payment happens.
  - Status: partial
  - Routes:
    - "My Musqet > API keys"
    - "My Musqet > Webhooks"
  - Error codes:
    - "400"
    - "401"
    - "403"
    - "404"
    - "429"
    - "500"
  - Symptoms:
    - "my API key stopped working"
    - "the API says I am not authorised"
    - "my webhook is not arriving"
    - "the webhook signature check fails"
  - Preconditions:
    - "An API key created in My Musqet, holding the permissions the endpoint needs"
    - "A public HTTPS URL to receive webhooks"

### Getting Started

- [Getting started](/getting-started/opening-your-account) ([markdown](/getting-started/opening-your-account.md)). Create your account, open a business, and take it through the application that switches on card and bitcoin payments. What each step asks for, and what happens once you are approved.
  - Status: partial
  - Routes:
    - "Sign up"
    - "Verify email"
    - "Your account, to add or switch between businesses and open your apps"
    - "Onboarding > Company / Operations / Director / Financial / PCI / Terms"
    - "Application under review"
    - "More from Musqet > Card payments / Bitcoin payments / EPOS / Bitcoin Rewards / AI Insights"
  - Error codes:
    - "EMAIL_NOT_VERIFIED"
    - "EMAIL_VERIFICATION_TOKEN_NOT_FOUND"
    - "EMAIL_ALREADY_VERIFIED"
  - Symptoms:
    - "How do I sign up"
    - "I never got the email to confirm my address"
    - "My email confirmation link has expired"
    - "How do I add a second business"
    - "How do I switch between my businesses"
    - "I signed in and there is no dashboard"
    - "How do I apply for card payments"
    - "Why does my dashboard say application in progress"
    - "Where do I find Bitcoin Rewards"
    - "How do I get EPOS"
    - "Why does Bitcoin say available soon"
    - "How long does the application take"
    - "What documents do I need to apply"
    - "The application will not let me change my details any more"
    - "My application is still under review"
    - "What happens when I am approved"
    - "Can I take bitcoin without doing the full application"
    - "Which payment services are switched on for my business"
    - "Can I change my business currency"
  - Preconditions:
    - "A registered business, its directors or owners, and its bank details, for the full card application"
    - "An invitation from Musqet, for a bitcoin-only account"

### Notifications

- [Notifications](/notifications/staying-informed) ([markdown](/notifications/staying-informed.md)). How Musqet tells you what has happened on your business. The notification centre, what you get told about, phone alerts, and adding other people to be told by email.
  - Status: partial
  - Routes:
    - "Notifications"
    - "Notification recipients"
  - Symptoms:
    - "Where do I see what has happened on my business"
    - "What does Musqet notify me about"
    - "How do I mark notifications as read"
    - "Why am I not getting alerts on my phone"
    - "How do I get a payment alert on my phone"
    - "How do I send alerts to someone who is not on my team"
    - "How do I add an email to get notified"
    - "The person I added is not getting notifications"
    - "How do I stop sending someone notifications"
  - Preconditions:
    - "See the business, to open the notification centre"
    - "Manage notifications permission, to add or change external recipients"

### Online Store

- [Agentic commerce](/online-store/agentic-commerce) ([markdown](/online-store/agentic-commerce.md)). Let AI shopping agents discover your Magento store and buy from it. Turn on agentic checkout, issue and revoke the agent API key, let an agent check out for a shopper, and push order updates back to it.
  - Status: partial
  - Routes:
    - "Magento > Stores > Configuration > Services > Musqet Agentic UCP"
  - Symptoms:
    - "How do I let AI agents buy from my store"
    - "What is agentic checkout"
    - "How do I give a shopping agent access to my store"
    - "How do I revoke an agent's access"
    - "How do agents find and read my store"
    - "How do I notify an agent when an order changes"
    - "Why does the UCP check report a failure"
  - Preconditions:
    - "A Magento 2 store you administer"
    - "Musqet gateway credentials for the payment rails you want (a Bitcoin Business ID and Musqet API Key for Lightning; a Cardstream Merchant ID and Cardstream Shared Secret as well for cards)"
    - "Access to your webserver configuration, to add two redirects"
- [Online store plugins](/online-store/plugins) ([markdown](/online-store/plugins.md)). Add Musqet payments to a WooCommerce or Magento store. Install the plugin, enter your credentials, choose a redirect or embedded checkout, and accept card, Google Pay, Apple Pay and bitcoin. Apple Pay needs the Cardstream gateway in embedded checkout.
  - Status: complete
  - Routes:
    - "WooCommerce > Settings > Payments > Musqet"
    - "Magento > Stores > Configuration > Sales > Payment Methods"
  - Symptoms:
    - "How do I add Musqet to my WooCommerce store"
    - "How do I add Musqet to my Magento store"
    - "Where do I enter my Client ID and Client Secret"
    - "What is the difference between redirect and embedded checkout"
    - "How do I accept Google Pay on my store"
    - "How do I accept Apple Pay on my store"
    - "How do I take bitcoin payments on my online store"
    - "Can I take only bitcoin on my store"
    - "Why is my payment link not being generated"
    - "Why is the card form not loading at checkout"
    - "Why is the Google Pay button not appearing"
  - Preconditions:
    - "A live Musqet merchant account"
    - "Your gateway credentials from Musqet"
    - "HTTPS on your storefront"
    - "A WooCommerce or Magento 2 store you administer"

### Partner Portal

- [Partner portal](/partner-portal/reselling-with-musqet) ([markdown](/partner-portal/reselling-with-musqet.md)). The reseller portal for partners who introduce merchants and sell Musqet products. Referrals, customers, quotes, orders, pricing, commission, your team and your statements.
  - Status: partial
  - Routes:
    - "Sign in"
    - "Prospects"
    - "Businesses"
    - "Estimator"
    - "Quotes"
    - "Approvals"
    - "Deals"
    - "Products"
    - "Comp plans"
    - "Commission"
    - "Statements"
    - "Introducer"
    - "Profile"
  - Symptoms:
    - "How do I get access to the partner portal"
    - "How do I reset my partner portal password"
    - "How do I change my partner portal password"
    - "How do I turn on two-factor authentication in the partner portal"
    - "How do I add a passkey in the partner portal"
    - "How do I refer a business"
    - "Where do I see my referrals and prospects"
    - "How do I create and send a quote"
    - "Why does my quote need approval"
    - "What do the quote statuses mean"
    - "How do I place an order"
    - "How is my commission worked out"
    - "Why can I not place an order or see deals"
    - "Why can I not see the full pricing"
    - "How do I add someone to my team"
    - "Where are my reseller statements"
    - "How do I invoice my own customers"
  - Preconditions:
    - "An invitation from Musqet, to join the partner portal"
    - "The owner role, for approvals, orders, the team, commission plans and statements"

### Payments

- [Card payments](/payments/card-payments) ([markdown](/payments/card-payments.md)). Take a card payment on the terminal, read a decline, print or email the receipt, and put a double charge right.
  - Status: partial
  - Routes:
    - "Terminal > Amount, to take a card payment"
    - "Terminal > Amount, then manual entry on the card reader, to key a card in by hand"
    - "Terminal > Menu > Pre-authorise, on a PAX terminal"
    - "Terminal > Menu > Complete pre-authorisation, on a PAX terminal"
    - "Terminal > Menu > Cancel pre-authorisation, on a PAX terminal"
    - "Terminal, payment result > Print, for the merchant or customer copy"
    - "Terminal, payment result > Email, to email the receipt to the customer"
  - Error codes:
    - "05"
    - "41"
    - "43"
    - "46"
    - "51"
    - "54"
    - "59"
    - "94"
    - "40300"
    - "50101"
    - "59999"
    - "64500"
    - "N7"
  - Symptoms:
    - "The card machine declined a customer's card"
    - "The terminal told the customer to keep or pick up the card"
    - "A customer's card was charged twice"
    - "The terminal could not confirm whether a payment went through"
    - "The terminal lost its connection during a sale"
    - "The sale went through but nothing printed"
    - "A customer wants the receipt emailed instead of printed"
    - "The amounts look wrong because the customer paid in their own currency"
    - "Pre-authorise is not on the terminal menu"
    - "The sale was cancelled on the card reader"
    - "A customer wants to pay over the phone or by post"
  - Preconditions:
    - "Card payments enabled for your business, for the terminal to take a card"
    - "A PAX terminal with pre-authorisation enabled for your business, to reserve an amount"
    - "Kiosk mode set up on the terminal, for a customer to pay unattended"
    - "A printer with paper in the terminal, to print a receipt"
    - "The customer's email address, to email a receipt instead of printing it"
- [Payment links and hosted checkout](/payments/payment-links) ([markdown](/payments/payment-links.md)). Make a payment link to send a customer, see what it was paid with, and send customers to a Musqet-hosted checkout from your own site.
  - Status: partial
  - Routes:
    - "My Musqet > Take payments > Payment Links, to make and manage links"
    - "My Musqet > Take payments > Payment Links > a link, to see its payments"
  - Symptoms:
    - "A customer says the link you sent them will not let them pay part of the amount"
    - "A customer's card was declined on a payment link"
    - "A customer was sent to their bank and the payment did not complete"
    - "A link still shows as unpaid after the customer says they paid"
    - "You cannot delete a payment link"
    - "Apple Pay is not showing on the payment page"
    - "A customer paid but was not returned to your website"
  - Preconditions:
    - "Payment links enabled for your business"
    - "A payment method set up (cards or bitcoin) so a link has a way to be paid"
    - "The Take payments permission, to create or delete links"
    - "For hosted checkout on your own site, a Musqet API key"
- [Refunds](/payments/refunds) ([markdown](/payments/refunds.md)). Give a customer their money back, on the card machine, in the merchant portal, or through the API.
  - Status: complete
  - Routes:
    - "Terminal > Refunds"
    - "Terminal > Refund verification, when running as a kiosk"
    - "Payment links > (link) > Refund"
    - "Staff members > (staff member), for refund permissions and limits"
    - "Staff members > Void log, for the record of voids taken on the terminal"
  - Error codes:
    - "authorized"
    - "failed"
    - "limit_exceeded"
    - "daily_limit_exceeded"
    - "invalid_signature"
    - "permission_denied"
    - "403"
  - Symptoms:
    - "The terminal says the refund password is wrong"
    - "The terminal will not accept the staff ID"
    - "It says the refund is more than the sale"
    - "A staff member is locked out of refunds"
    - "I can refund a payment but not cancel it"
    - "The refund log has no entries for terminal refunds"
    - "No staff member is named against a terminal refund"
    - "A Bitcoin refund did not send any Bitcoin to the customer"
    - "I need to see who voided a sale and when"
    - "A refund has not reached the customer's account yet"
    - "A customer's bank has reversed a payment, or I have received a chargeback"
  - Preconditions:
    - "TAKE_PAYMENTS_WRITE, and REFUNDS_WRITE as well for an uncapped REFUND"
    - "Refund & void permission on the staff member, for a terminal refund"
    - "A refund password changed at least once, when password protection is on"
    - "Headroom left on the original payment, except for an uncapped REFUND"
    - "A payment that reached the gateway and has a gateway reference"
    - "Within the staff member's per-transaction and daily refund limits, if either is set"
- [Settlements and fees](/payments/settlements-and-fees) ([markdown](/payments/settlements-and-fees.md)). When your card takings reach your bank, the statements and invoices that break them down, and what Musqet, the bitcoin network, and Spark charge you.
  - Status: partial
  - Routes:
    - "Sales > Settlements"
    - "Invoices"
    - "Wallet app > Fees"
  - Symptoms:
    - "A payout I expected has not arrived in my bank"
    - "My settlement is missing from the list"
    - "What are these fees on my invoice"
    - "How much bitcoin network fee will I pay"
    - "I owe Spark fees and want to clear them"
  - Preconditions:
    - "Settlements and invoices show only for a business set up to take card payments"
    - "Spark fees appear only when you accept bitcoin over the Spark rail with your own wallet"
- [Taking bitcoin payments](/payments/bitcoin-payments) ([markdown](/payments/bitcoin-payments.md)). The bitcoin rails you can accept, how the exchange rate holds, when a payment counts as settled, and what to do when one expires or comes in for the wrong amount.
  - Status: partial
  - Routes:
    - "Create a payment (My Musqet)"
    - "Terminal > Bitcoin"
    - "Wallet app > Take a payment"
  - Symptoms:
    - "The customer paid but the terminal still says unconfirmed"
    - "The bitcoin amount changed while I was taking the payment"
    - "The invoice expired before the customer paid"
    - "The customer paid the wrong amount of bitcoin"
    - "Which bitcoin rails can I accept"
  - Preconditions:
    - "Bitcoin acceptance is switched on for each business by Musqet"
    - "Which rails you can use depends on the services enabled for your business"
- [Tips](/payments/tips) ([markdown](/payments/tips.md)). Ask for a tip at the till, send a tip straight to the cashier who served the customer, or share a Lightning tip link that pays your business.
  - Status: partial
  - Routes:
    - "Devices > Tips"
    - "Team > Lightning tips"
    - "Merchant app > Menu > Tips, to offer cashier tips"
    - "Merchant app > Menu > Business tip links, to manage tip links"
    - "Merchant app > Wallet, to claim your tips"
    - "Terminal > Add a tip, shown on a card sale"
  - Error codes:
    - "invalid_pin"
    - "409"
    - "412"
    - "423"
    - "429"
  - Symptoms:
    - "The terminal is not asking customers for a tip"
    - "The tip amounts on the till are wrong"
    - "A cashier cannot claim their tips"
    - "The till PIN is not accepted when claiming tips"
    - "A cashier is locked out of claiming tips"
    - "The customer was never offered a tip"
    - "A tip did not reach the cashier who served the customer"
    - "My Lightning tip link name is already taken"
    - "A tip link stopped working"
    - "I cannot see my card tips as a separate figure"
  - Preconditions:
    - "Tips enabled for your business, and Devices permission, to set up till tips"
    - "A tips configuration assigned to the terminal and switched on, for the till to ask"
    - "Staff members enabled, and the sale attributed to a staff member, for a cashier tip"
    - "The cashier has claimed their identity and set up a personal wallet, to receive a tip"
    - "A registered personal wallet and the till PIN, for a cashier to claim their tips"
    - "Bitcoin services on your business, and the Manage tip links permission, to create a tip link"
    - "The View tip links permission, to see the tip links without being able to change them"

### Personal Wallet

- [Personal wallet](/personal-wallet/your-personal-wallet) ([markdown](/personal-wallet/your-personal-wallet.md)). Your own bitcoin wallet in the merchant app, separate from any business. Set it up, back it up, receive and send, claim a pay-by-name handle, and have your tips paid straight to it.
  - Status: partial
  - Routes:
    - "Wallet > Personal, in the merchant app"
  - Symptoms:
    - "What is the personal wallet"
    - "How do I set up my personal wallet"
    - "How do I back up my personal wallet"
    - "How do I receive bitcoin to my own wallet"
    - "How do I get paid by name"
    - "What is my Musqet handle"
    - "How do I get my tips paid to my wallet"
    - "Why can I not see the personal wallet"
  - Preconditions:
    - "The merchant app, signed in to your account"
    - "A screen lock on your phone, to secure the wallet"

### Reference

- [Error codes](/reference/error-codes) ([markdown](/reference/error-codes.md)). Error codes and statuses a Musqet response can carry, each linked to the page that explains what to do about it.
  - Status: complete
- [Permissions](/reference/permissions) ([markdown](/reference/permissions.md)). Every resource:action permission the Musqet API grants, as a resource-by-action matrix.
  - Status: complete
- [Webhook events](/reference/webhook-events) ([markdown](/reference/webhook-events.md)). The outbound events Musqet posts to your webhook endpoints, and the payload they carry.
  - Status: complete

### Sales And Reporting

- [Sales and reporting](/sales-and-reporting/reports-and-figures) ([markdown](/sales-and-reporting/reports-and-figures.md)). Your transactions, the dashboard and its figures, and the reports a terminal prints. What each number means, and why some of them do not match.
  - Status: partial
  - Routes:
    - "Transactions"
    - "Dashboard"
    - "Menu > Report, on the terminal"
  - Symptoms:
    - "Where do I see my payments"
    - "How do I filter my transactions"
    - "How do I export my sales to a spreadsheet"
    - "Why is my revenue lower than my sales"
    - "What is the difference between sales and revenue"
    - "What does net income mean"
    - "Why do my dashboard figures not match my statement"
    - "How is bitcoin valued in my figures"
    - "Why did a payment fail"
    - "What are my busiest times"
    - "How do I run an end of day report"
    - "How do I reprint a Z report"
    - "How do I see what each staff member took"
    - "Why do my app takings include my card sales"
  - Preconditions:
    - "See sales permission, to view transactions and the dashboard"
    - "Edit dashboard permission, to change what the dashboard shows"

### Team

- [Team and staff](/team/team-and-staff) ([markdown](/team/team-and-staff.md)). Give a colleague access to your dashboard, and set up the till roster that serves your customers. Two separate things, kept apart here.
  - Status: partial
  - Routes:
    - "Team"
    - "Team > (member), to change a role or fine-tune permissions"
    - "Staff members"
    - "Staff members > (staff member), to reset a password, unlock, or set limits"
    - "Terminal > staff sign-in, to clock in and out"
  - Error codes:
    - "TEAM_MEMBER_ALREADY_EXISTS"
    - "TEAM_MEMBER_ALREADY_VERIFIED"
    - "TEAM_CANNOT_CHANGE_OWN_ROLE"
    - "TEAM_CANNOT_REMOVE_LAST_OWNER"
    - "TEAM_CANNOT_REMOVE_SELF"
    - "TEAM_INVITE_COOLDOWN"
    - "TEAM_ROLE_OWNER_ONLY"
    - "TEAM_PERMISSION_OWNER_ONLY"
  - Symptoms:
    - "What is the difference between a team member and a staff member"
    - "I invited someone but they never got the email"
    - "The invitation has expired"
    - "I cannot change my own role"
    - "It will not let me remove the last owner"
    - "A new team member cannot see everything I can"
    - "An admin only sees Team in the dashboard"
    - "It says only an owner can manage owners and admins"
    - "A staff member is locked out at the till"
    - "A staff member has forgotten their PIN"
    - "No staff member is named against a sale"
    - "The wrong staff member is shown against a sale"
  - Preconditions:
    - "Manage team permission, to invite, change a role, or remove a team member"
    - "Manage devices permission, to add a staff member, reset a password, or unlock one"
    - "A shared till device, for staff sign-in and sales attribution on the merchant app"

### Terminals And Devices

- [Terminals and devices](/terminals-and-devices/card-machines-and-tills) ([markdown](/terminals-and-devices/card-machines-and-tills.md)). Card machines and tills. Issue and manage the logins a card machine signs in with, enrol a phone as a till, and set how a terminal looks, prints and behaves.
  - Status: partial
  - Routes:
    - "Terminal logins"
    - "Terminal settings"
    - "Devices, in the merchant app"
    - "Settings, on the terminal itself"
  - Symptoms:
    - "Which card machines does Musqet support"
    - "How do I connect a new card machine"
    - "What login does the terminal use"
    - "I need to change a terminal's password"
    - "How do I sign a terminal out"
    - "How do I stop a lost terminal being used"
    - "How do I add a phone as a till"
    - "How do I remove a till"
    - "How do I put my logo on the terminal"
    - "How do I change what the receipt says"
    - "How do I set a screen saver"
    - "What is kiosk mode"
    - "How do I get the terminal onto wifi"
    - "The machine is misbehaving and support asked for diagnostics"
  - Preconditions:
    - "Manage devices permission, to issue or change device logins and terminal settings"
    - "A supported card machine, to take card payments in person"
    - "The merchant app, to enrol and manage tills"
