Skip to main content

Account Management

Budget Bee provides comprehensive account management features for controlling your profile, security settings, and active sessions.

Account Types

Budget Bee supports two types of accounts:

Personal Accounts

Individual accounts for personal finance management. Free tier available.

Organization Accounts

Multi-user accounts for teams and businesses. Requires Pro or Teams subscription.

Profile Management

Manage your user profile information:

Accessing Profile Settings

1

Navigate to Settings

Click your profile icon in the sidebar and select Settings, or navigate to /settings.
2

Edit Profile Information

Update your profile details:
name
string
required
Your display name (minimum 2 characters)
email
string
required
Your email address (used for login and notifications)
3

Save Changes

Click Save Changes to update your profile.
// Profile editing component
// From apps/web/components/accounts/edit-profile.tsx

export function EditProfile() {
  const { data: session } = authClient.useSession();
  
  const handleSubmit = async (data: ProfileFormValues) => {
    const res = await authClient.user.update({
      name: data.name,
      email: data.email
    });
    
    if (res.error) {
      toast.error(res.error.message);
    } else {
      toast.success("Profile updated successfully");
    }
  };
  
  return (
    <form onSubmit={handleSubmit}>
      {/* Form fields */}
    </form>
  );
}

Authentication Methods

Budget Bee supports multiple authentication methods:

Email and Password

The default authentication method:
Passwords must meet these security requirements:
  • Minimum 8 characters
  • At least 1 lowercase letter
  • At least 1 uppercase letter
  • At least 1 number

Social Login

Authenticate using third-party providers:

Google OAuth

Sign in with your Google account for quick access.

Account Linking

Link multiple authentication methods to the same account.
// Google sign-in configuration
// From packages/core/auth.ts

socialProviders: {
  google: {
    enabled: true,
    prompt: "select_account",
    clientId: process.env.GOOGLE_CLIENT_ID!,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
  },
}
Account linking allows you to sign in with Google even if you originally created your account with email and password.

Session Management

View and manage your active authentication sessions:

Active Sessions

Budget Bee tracks all active sessions including:
  • Device information
  • Browser type
  • IP address
  • Last active time
  • Session creation time
// Sessions list component
// From apps/web/components/accounts/sessions-list.tsx

export function SessionsList() {
  const { data: sessions } = useQuery({
    queryKey: ['sessions'],
    queryFn: async () => {
      const res = await authClient.session.list();
      return res.data;
    }
  });
  
  return (
    <div>
      {sessions?.map(session => (
        <SessionCard 
          key={session.id}
          session={session}
          onRevoke={handleRevoke}
        />
      ))}
    </div>
  );
}

Revoking Sessions

1

View Active Sessions

Navigate to SettingsSessions to see all active sessions.
2

Identify Suspicious Sessions

Review the session list for any unfamiliar devices or locations.
3

Revoke Session

Click Revoke next to any session you want to terminate.
Revoking your current session will log you out immediately.

Email Verification

Email verification is required for new accounts:

Verification Process

1

Sign Up

Create your account with email and password.
2

Check Email

You’ll receive a verification email at the provided address.
3

Click Verification Link

Click the link in the email to verify your account.
4

Access Budget Bee

After verification, you can sign in and access all features.
// Email verification configuration
emailVerification: {
  sendVerificationEmail: async data => {
    const { data: success, error } = await resend.emails.send({
      from: `${process.env.SMTP_SENDER_NAME} <${process.env.SMTP_MAIL}>`,
      to: [data.user.email],
      subject: "Verify your email",
      html: verificationLink(data.url),
    });
  },
  sendOnSignUp: true,
  sendOnSignIn: true, // Resend if user not verified
}

Resending Verification Email

If you didn’t receive the verification email:
  1. Try signing in with your credentials
  2. Budget Bee will automatically resend the verification email
  3. Check your spam folder
  4. Ensure the email address is correct

Password Reset

Reset your password if you forget it:
1

Click Forgot Password

On the login page, click Forgot Password.
2

Enter Email

Provide the email address associated with your account.
3

Check Email

You’ll receive a password reset email within a few minutes.
4

Create New Password

Click the link in the email and create a new password that meets the security requirements.
5

Sign In

Use your new password to sign in to Budget Bee.
// Password reset email configuration
sendResetPassword: async data => {
  const { data: success, error } = await resend.emails.send({
    from: `${process.env.SMTP_SENDER_NAME} <${process.env.SMTP_MAIL}>`,
    to: [data.user.email],
    subject: "Password reset",
    html: resetPassword(data.url),
  });
}

Account Deletion

Permanently delete your Budget Bee account:
Account deletion is irreversible. All your data including transactions, categories, and settings will be permanently deleted.

Deletion Process

1

Export Your Data

Before deleting, export all your transaction data for backup.
2

Navigate to Settings

Go to Settings and scroll to the danger zone at the bottom.
3

Confirm Deletion

Click Delete Account and type your account name to confirm.
4

Account Deleted

Your account and all associated data will be immediately deleted.
// Delete account confirmation modal
// From apps/web/components/accounts/delete-account-confirmation-modal.tsx

<AlertDialog>
  <AlertDialogContent>
    <AlertDialogHeader>
      <AlertDialogTitle>Delete Account</AlertDialogTitle>
      <AlertDialogDescription>
        This action cannot be undone. This will permanently delete your
        account and remove all associated data.
      </AlertDialogDescription>
    </AlertDialogHeader>
    <AlertDialogFooter>
      <AlertDialogCancel>Cancel</AlertDialogCancel>
      <AlertDialogAction onClick={handleDelete}>
        Delete Account
      </AlertDialogAction>
    </AlertDialogFooter>
  </AlertDialogContent>
</AlertDialog>

What Gets Deleted

When you delete your account:
  • ✅ All transactions
  • ✅ All categories (custom categories only)
  • ✅ All dashboards and widgets
  • ✅ All subscriptions
  • ✅ Profile information
  • ✅ Active sessions
  • ✅ Organization memberships (you’ll be removed from all organizations)
If you’re the owner of an organization, you must transfer ownership or delete the organization before deleting your account.

Multi-Currency Support

Budget Bee accounts support multiple currencies:
  • Set a default currency for new transactions
  • Track transactions in 150+ currencies
  • View balances converted to your preferred currency
  • Filter and group by currency

Subscription Status

View your current subscription plan:
  • Free: Personal account with basic features
  • Pro: Individual account with advanced features
  • Teams: Multi-user organization accounts
  • Teams Yearly: Annual billing for teams

Checking Subscription Status

Your subscription status is displayed in:
  • Account settings page
  • Organization settings (if applicable)
  • Header navigation
// Subscription check in session
customSession(async ({ session, user }) => {
  const subscription = `select product_id from app_subscriptions 
    where user_id = $1 and period_start <= now() and period_end >= now()`;
  const subscriptionRes = await authAdminClient.query(subscription, [user.id]);
  
  const isSubscribed = subscriptionRes?.rows?.length > 0;
  
  return {
    user,
    session,
    subscription: {
      isSubscribed,
      productId: subscriptionRes.rows[0]?.product_id,
    },
  };
})

Security Best Practices

Strong Passwords

Use unique, complex passwords that meet all requirements.

Regular Session Review

Periodically review and revoke unfamiliar sessions.

Email Security

Ensure your email account is secure - it’s used for password resets.

Account Linking

Link multiple authentication methods for account recovery options.

Database Schema

Users are stored in the database:
-- Users table (created by Better Auth)
create table users (
  id text primary key,
  name text,
  email text unique not null,
  email_verified boolean default false,
  image text,
  created_at timestamp default current_timestamp,
  updated_at timestamp default current_timestamp
);

-- Sessions table
create table sessions (
  id text primary key,
  expires_at timestamp not null,
  ip_address text,
  user_agent text,
  user_id text references users(id) on delete cascade,
  created_at timestamp default current_timestamp,
  updated_at timestamp default current_timestamp
);

Troubleshooting

  • Check your spam folder
  • Ensure the email address is correct
  • Try signing in to trigger a new verification email
  • Contact support if the issue persists
  • Check spam folder for the reset email
  • Ensure you’re using the correct email address
  • Reset links expire after a certain time
  • Try requesting a new reset link
  • If you own organizations, transfer or delete them first
  • Ensure you’re typing the correct confirmation text
  • Try signing out and back in
  • Check your browser’s cookie settings
  • Ensure cookies are enabled for Budget Bee
  • Clear browser cache and cookies
  • Try a different browser

Build docs developers (and LLMs) love