Settings Path Navigation

Navigate to settings by clicking the gear icon in the top-right navigation, then select a section from the settings sidebar. The URL pattern is /settings/{section}. Changes take effect immediately unless noted otherwise.

1. Company Profile

Path: Settings > Company

The Company Profile is the master record for your organization. This data appears on invoices, PDF labels, the public tracking page, and email footers.

Basic Information

Company Name
company.name

Your company's legal trading name. Appears in the app header, emails, invoices, and PDF labels. Misconfiguration: Wrong name on customer-facing documents is unprofessional and may cause legal/tax issues.

Tax ID / VAT Number
company.tax_id

Your company's tax registration number. Printed on invoices as required by most tax authorities for B2B transactions.

Address
company.address

Full registered business address. Appears on invoices, PDF labels, and the public tracking page footer.

Phone
company.phone

Main contact phone number. Shown on invoices and the public tracking page for customer inquiries.

Email
company.email

Main business contact email. Shown on invoices and tracking page. Not the same as the MAIL_FROM_ADDRESS environment variable (which is the sending address).

Website
company.website

Your company website URL. Shown on invoices and in email footers as a clickable link.

Default Currency
company.currency

ISO 4217 currency code (e.g., USD, EUR, GBP, MXN). Used for all invoices, reports, and financial displays. Misconfiguration: Changing the currency after invoices have been created will cause financial data inconsistency. Set this before creating any invoices.

Country
company.country

Your company's country of operation. Used for locale defaults, tax display, and address formatting.

Logo & Images

Main Logo
company.logo

Primary company logo. Appears in the app sidebar header, PDF invoices, and shipment labels. Recommended: PNG with transparent background, minimum 300×100px, max 2MB.

Sub-Logo / Secondary Logo
company.logo_secondary

Optional alternate version (e.g., reversed/white logo for dark backgrounds). Used in PDF footers and email headers.

Favicon
company.favicon

Browser tab icon. Recommended: 32×32px or 64×64px PNG or ICO file. Shows in browser tabs and bookmarks.

Login Page Logo
company.login_logo

Logo shown on the login page above the sign-in form. Can differ from the main logo (e.g., full horizontal logo on login vs. icon-only in sidebar).

Login Page Background Image
company.login_image

Background image for the right panel of the login page. Recommended: 1200×800px minimum, 5MB max. Supports JPEG and PNG. If not set, a gradient background using the primary color is used.

2. Branding

Path: Settings > Branding

Customize the visual appearance of the entire application. Changes are applied in real time — a preview panel on the right shows the effect immediately before saving.

Color Scheme

Primary Color
branding.primary_color

Main accent color used for buttons, active links, highlights, and key UI elements. Default: #FF6B35 (electric coral). Accepts any valid hex color code.

Secondary Color
branding.secondary_color

Used for secondary buttons, hover states, and complementary accent elements. Default: #1e2538.

Accent Color
branding.accent_color

Used for highlights, badges, and callout elements. Creates visual hierarchy alongside the primary color.

UI Theme
branding.theme

Options: dark (default), light, system (follows OS preference). Each user can override the theme in their profile settings — the setting here is the system default for new users.

Typography & Layout

Sidebar Compact Mode
branding.sidebar_compact

When enabled, the sidebar collapses to show only icons (no labels), giving more horizontal space to the main content area. Can be toggled per user from the sidebar footer.

Primary Font
branding.font_primary

Body text font. Select from: Inter (default), Roboto, Open Sans, Poppins, Lato, Nunito. Font is loaded from Google Fonts CDN.

Base Font Size
branding.font_size

Base font size in pixels. Options: 13, 14 (default), 15, 16. Affects readability and UI density. Larger values are better for accessibility.

Layout Density
branding.density

Controls padding and spacing throughout the UI. Options: comfortable (spacious, best for focus), normal (default), compact (more data on screen, better for power users).

Card Skin
branding.card_style

Visual style for content cards and panels. Options: shadow (default, subtle drop shadow), flat (no shadow, clean), bordered (visible border, no shadow).

Monochrome Mode
branding.monochrome

When enabled, removes color from status badges and replaces with grayscale patterns. Useful for accessibility (colorblind users) or printing screenshots.

Notification Style

Notification Style
branding.notification_style

How in-app notifications appear. toast (default) — small temporary pop-up in the corner. banner — full-width bar at the top of the page.

Toast Position
branding.toast_position

Where toast notifications appear. Options: top-right (default), top-left, bottom-right, bottom-left, top-center.

Toast Duration
branding.toast_duration

Milliseconds before a toast notification auto-dismisses. Default: 4000 (4 seconds). Range: 1000–15000. Error toasts do not auto-dismiss regardless of this setting.

Max Notifications
branding.toast_max

Maximum number of toast notifications visible simultaneously. Default: 3. Additional notifications are queued and shown as previous ones dismiss.

Login Page Customization

Welcome Text
branding.login_welcome

Headline text shown on the login page (on the image/background panel). Default: "Welcome Back". Customize with your brand message.

Login Form Position
branding.login_form_side

Which side the login form appears. left (default) or right. The image/background occupies the opposite side.

Show Registration Link
branding.login_show_register

Whether to show a "Register" link on the login page. Disable this if you only want invited users and not self-registration.

3. Locale

Path: Settings > Locale

Regional Settings

Language
locale.language

Application interface language. Options: en (English, default), es (Spanish). Individual users can override in their profile. Translation files: resources/js/i18n/en.json and es.json.

Timezone
locale.timezone

System timezone for all date/time displays and scheduled operations. Uses PHP/IANA timezone identifiers (e.g., America/New_York, Europe/London, America/Mexico_City). Critical: Set this before going live. Changing after production use creates confusion in historical timestamps.

Date Format
locale.date_format

How dates are displayed throughout the UI and on PDFs. Options: d/m/Y (31/12/2026), Y-m-d (2026-12-31, ISO format), m/d/Y (12/31/2026, US format), d M Y (31 Dec 2026).

Time Format
locale.time_format

12-hour (h:i A, shows AM/PM) or 24-hour (H:i) time display.

Weight Unit
locale.weight_unit

kg (kilograms, default) or lb (pounds). Affects shipment weight entry and display in the UI and on labels.

Dimension Unit
locale.dimension_unit

cm (centimeters, default) or in (inches). Affects package dimension entry and display.

Currency Code
locale.currency

ISO 4217 currency code used for formatting monetary amounts in the UI. This is separate from the company.currency setting — they should match. Example: USD, EUR, MXN.

4. Branches

Path: Settings > Branches

Branches represent your physical locations — main office, warehouses, distribution hubs, etc. Each branch is independently managed but all branches share the same Deprixa Plus installation.

Branch Fields

Branch Name

Descriptive name (e.g., "Miami Main", "Guadalajara North"). Shown in branch dropdowns throughout the app and on shipment records.

Branch Code

Short identifier for reports and tracking (e.g., "MIA", "GDL"). 2–6 characters, uppercase. Used as a prefix component in branch-specific tracking numbers if configured.

Address / Phone

Physical address and contact number for this location. Shown on shipment labels as the pickup/origin point.

Branch Manager

Assign a system user as this branch's manager. They receive branch-specific notifications and alerts.

Active / Inactive

Inactive branches are hidden from branch selection dropdowns but their historical data is preserved. Use this when a location closes.

Set as Default Branch

The default branch is pre-selected when creating new shipments. Only one branch can be the default at a time.

5. Departments

Path: Settings > Departments

Organize your team into departments for better management and reporting. Departments are used to categorize users and can be assigned to specific branches.

Department Name

The department's display name (e.g., "Operations", "Sales", "Customer Service", "Warehouse"). Shown in user profiles and team management views.

Description

Optional description of the department's responsibilities. Useful for organization clarity when onboarding new team members.

Department Head

Assign a user as the department head. This user receives department-specific reports and escalation notifications.

Active / Inactive

Inactive departments are hidden from selection dropdowns. Users assigned to inactive departments retain their assignment but cannot be newly assigned.

6. Shipment Statuses

Path: Settings > Shipment Statuses

Customize the labels and colors of shipment statuses to match your company's terminology. The underlying status codes (e.g., in_transit, delivered) are fixed system codes — only the display names and colors can be changed.

Status Configuration Fields

Display Name

The name shown to users in the UI and on the customer tracking page. Example: change "Out for Delivery" to "With Driver".

Color

Hex color used for the status badge throughout the app and on the shipment timeline on the tracking page.

Sort Order

Controls the order statuses appear in dropdown menus and legend displays. Drag to reorder.

Visible on Tracking Page

Whether this status is shown to customers on the public tracking page. For internal statuses (e.g., "On Hold - Pending Payment"), you may want to show customers a more generic "In Progress" message instead.

Customer-Facing Label

The text shown to customers on the public tracking page, which may differ from the internal label. Example: Internal = "Exception - Address Not Found", Customer = "Delivery Attempt Unsuccessful".

7. Services

Path: Settings > Services

Service types define the delivery speed tiers available for shipments. Each service can have its own pricing rules, delivery time estimate, and availability settings.

Service Fields

Service Name

Display name (e.g., "Standard Delivery", "Express Next Day").

Code

Internal code used in the API and exports. Lowercase, underscores (e.g., standard, express). Cannot be changed after creating shipments with this service.

Base Price

Default price for this service. Overridden by client contracts when applicable. Shown to dispatchers during shipment creation.

Estimated Delivery Days

Used to calculate estimated delivery date on the tracking page and to flag overdue shipments in reports.

Active / Inactive

Inactive services cannot be selected for new shipments. Existing shipments using this service are not affected.

8. Users & Team

Path: Settings > Users & Team

Manage all users in your organization. Invite new members, assign roles, assign branches, and control access.

User Management

Invite User

Add a new user by entering their name, email, and assigning a role (Admin, Operator, Driver, Customer, Viewer). The user receives an email invitation with a temporary password. The user is automatically scoped to your organization (tenant).

Role Assignment

Each user must have exactly one role. Roles determine sidebar visibility, page access, and API permissions. Roles: Super Admin (full access), Admin (org management), Operator (day-to-day logistics), Driver (mobile dispatch), Customer (portal access), Viewer (read-only).

Branch Assignment

Assign the user to one or more branches. Operators and Drivers only see shipments from their assigned branches. Admins see all branches.

Deactivate / Reactivate

Toggle a user's active status. Deactivated users cannot log in but their data and history are preserved. Useful for temporary suspensions or departing employees.

Password Reset

Force a password reset for any user. The user receives an email with a reset link. Useful when a team member forgets their password or as a security measure.

9. Roles & Permissions

Path: Settings > Roles & Permissions

Fine-grained access control powered by Spatie Permissions. Create custom roles, assign individual permissions, and control which modules each role can access.

Permission System

Default Roles

The system ships with 5 default roles: super-admin (102 permissions, full access), admin (org-level management), operator (logistics operations), driver (mobile delivery), customer (self-service portal). You can create additional custom roles.

Permission Groups

Permissions are organized into groups: Shipments (view, create, edit, delete, export), Clients, Invoices, Branches, Inventory, Reports, Settings, Contracts, Commissions, Dispatch, SaaS (billing.manage, plans.manage, organizations.manage, dashboard.view, wallet.manage). Each permission can be toggled individually per role.

Create Custom Role

Click "Add Role" to create a new role. Enter a name and select the permissions to assign. The role is immediately available for user assignment. Custom roles inherit no permissions by default — you must explicitly assign each one.

10. Notifications

Path: Settings > Notifications

Configure notification rules, SMTP email settings, and messaging channels (Twilio SMS, UltraMsg WhatsApp). The notification engine supports template variables for dynamic content.

SMTP Configuration

Configure your outgoing email server. All system emails (shipment notifications, invoices, password resets, alerts) are sent through this SMTP connection.

FieldDescription
SMTP HostThe hostname of your mail server (e.g., smtp.gmail.com, smtp.mailgun.org, email-smtp.us-east-1.amazonaws.com for Amazon SES).
SMTP PortPort number. Common values: 587 (TLS — recommended), 465 (SSL), 25 (unencrypted — not recommended). Most providers use 587.
EncryptionSelect TLS (recommended, port 587), SSL (port 465), or None (port 25). Must match the port you set above.
UsernameSMTP authentication username. For Gmail: your full email address. For Amazon SES: your IAM SMTP username. For Mailgun: postmaster@yourdomain.com.
PasswordSMTP authentication password. Stored encrypted in the database. For Gmail: use an App Password (not your Google password). For Amazon SES: your IAM SMTP password.
From AddressThe "From" email address that appears on all outgoing emails (e.g., notifications@yourcompany.com). Must be a valid, verified address on your SMTP provider.
From NameThe sender display name (e.g., "Deprixa Plus" or "Your Company Name"). Shown to recipients next to the From Address.

Gmail App Password

If using Gmail as your SMTP provider, you must use an App Password — not your regular Google password. Enable 2-Step Verification in your Google Account, then go to Security → App Passwords → Generate a 16-character password. Use that as the SMTP password.

Test Connection: After saving your SMTP settings, click "Send Test Email" to verify the configuration. Enter a recipient email address and the system will send a test email. Check your inbox (and spam folder) to confirm delivery.

Common SMTP providers:

ProviderHostPortEncryption
Gmailsmtp.gmail.com587TLS
Amazon SESemail-smtp.{region}.amazonaws.com587TLS
Mailgunsmtp.mailgun.org587TLS
SendGridsmtp.sendgrid.net587TLS
Outlook/Office 365smtp.office365.com587TLS
Zoho Mailsmtp.zoho.com587TLS

Notification Rules

Create rules that define when and how notifications are sent. Each rule specifies the trigger event, the channels to use, and the message template.

New Shipment Created
notifications.rules.new_shipment

Sends a confirmation to the receiver (with tracking link) and optionally to the sender. Channels: Email, WhatsApp, SMS. Toggle recipients: Receiver Only, Sender Only, Both, Disabled.

Shipment Status Changed
notifications.rules.status_change

Sends a status update when a shipment transitions to a configured status (e.g., Picked Up, In Transit, Out for Delivery, Delivered). Configure which statuses trigger a notification.

Shipment Delivered
notifications.rules.delivered

Delivery confirmation to receiver and sender. The most important customer-facing notification. Recommended: always keep enabled.

Delivery Exception
notifications.rules.exception

Notifies the sender/client when a delivery attempt fails. Includes the exception reason and next steps.

Invoice Sent / Overdue
notifications.rules.invoice

Emails the invoice PDF when status changes to Sent. Payment reminder when invoice becomes overdue (configurable: due date, 3 days, 7 days after).

Low Stock Alert
notifications.rules.low_stock

Alert to branch manager when inventory falls below reorder point. Sends both email and in-app notification.

Template Variables

Available variables in message templates: {{tracking}}, {{status}}, {{name}} (recipient), {{sender}}, {{company}}, {{date}}. These are automatically replaced with actual values when the notification is sent.

Messaging Channels

Twilio (SMS & WhatsApp)

Send SMS and WhatsApp notifications via Twilio. Requires a Twilio account with an active phone number.

FieldDescription
Account SIDYour Twilio Account SID. Found in the Twilio Console dashboard.
Auth TokenYour Twilio Auth Token. Stored encrypted in the database.
Phone NumberYour Twilio phone number in E.164 format (e.g., +14155551234). Must be SMS-enabled.

UltraMsg (WhatsApp)

Alternative to Twilio for WhatsApp notifications. UltraMsg provides a simple HTTP API for sending WhatsApp messages without requiring a Twilio account.

FieldDescription
Instance IDYour UltraMsg instance identifier. Found in your UltraMsg dashboard after creating an instance and scanning the QR code.
API TokenAuthentication token for the UltraMsg API. Found in your instance settings. Stored encrypted in the database.
Test PhoneEnter a phone number with country code (e.g., +14155551234) to receive a test WhatsApp message.

Save Before Testing

You must click "Save Configuration" before clicking "Test Connection". The test verifies the saved credentials in the database. If you test without saving first, you'll see an error: "Instance ID and API Token are required."

UltraMsg setup steps:

  1. Create an account at ultramsg.com
  2. Create a new instance and scan the QR code with your WhatsApp
  3. Copy the Instance ID and Token from your instance dashboard
  4. Paste them in Settings → Notifications → Channels → UltraMsg
  5. Click "Save Configuration"
  6. Enter a test phone number and click "Test Connection" to verify

WhatsApp Priority

When both Twilio and UltraMsg are configured, the system prioritizes UltraMsg first. If UltraMsg fails (e.g., instance disconnected), it automatically falls back to Twilio. Notifications are dispatched as background jobs via Laravel queues for reliability.

11. Security

Path: Settings > Security

Password & Session Policies

Minimum Password Length
security.password_min_length

Minimum characters required for all user passwords. Default: 8. Recommended: 12+ for production. Affects new password creation and password changes only.

Require Uppercase
security.password_require_uppercase

When enabled, passwords must include at least one uppercase letter (A–Z).

Require Number
security.password_require_number

When enabled, passwords must include at least one numeric digit (0–9).

Require Symbol
security.password_require_symbol

When enabled, passwords must include at least one special character (e.g., !, @, #, $).

Session Timeout
security.session_timeout

Minutes of inactivity before the user session expires and they are logged out. Default: 120. Set lower for high-security environments. Range: 5–480 minutes.

Require 2FA for Admin Roles
security.enforce_2fa_admin

When enabled, users with Super Admin or Admin roles must complete 2FA setup before they can access the application. Applies to new logins — existing sessions are not terminated immediately.

Login Attempt Limit
security.login_attempts

Maximum failed login attempts before the account is temporarily locked. Default: 5. Lock duration: 15 minutes. After the lock expires, the counter resets.

IP Whitelist
security.ip_whitelist

Optional list of allowed IP addresses or CIDR ranges that can access the application. When set, logins from any other IP are rejected. Leave empty to allow access from any IP. Warning: If your server IP changes or you misconfigure this, you may lock yourself out. Always test from whitelisted IP before saving.

12. Integrations

Path: Settings > Integrations

Connect external services to your platform — authentication providers, shipping carriers, e-commerce marketplaces, public calculators, and map providers.

Google OAuth

Configure Google OAuth credentials for authentication and API access. When enabled, users can sign in with their Google account using the "Continue with Google" button on the login page.

FieldDescription
Client IDYour Google OAuth 2.0 Client ID (e.g., 123456789.apps.googleusercontent.com). Obtain from Google Cloud Console → APIs & Services → Credentials.
Client SecretYour Google OAuth Client Secret. Stored encrypted in the database.

Setup steps:

  1. Go to Google Cloud Console
  2. Create a project (or select an existing one)
  3. Navigate to APIs & Services → Credentials
  4. Click "Create Credentials" → "OAuth 2.0 Client ID"
  5. Application type: Web application
  6. Add Authorized redirect URI: https://yourdomain.com/auth/google/callback
  7. Copy the Client ID and Client Secret
  8. Paste them in Settings → Integrations → Google OAuth
  9. Click "Save", then click "Test Connection (Real)" to verify

Redirect URI Must Match

The Authorized redirect URI in Google Cloud Console must exactly match your APP_URL + /auth/google/callback. If your domain changes, update both Google Console and your .env file.

Carrier Integrations

Connect shipping carriers to automatically calculate real-time rates and create shipping labels. Each carrier supports sandbox mode for testing.

DHL Express

FieldDescription
EnabledToggle to activate DHL Express as a carrier for rate calculations and label creation.
SandboxWhen enabled, API calls go to DHL's sandbox environment — no real shipments are created. Disable for production.
API KeyYour DHL Express API Key. Obtain from the DHL Developer Portal. Stored encrypted.
Account NumberYour DHL Express account number (usually 9-10 digits). Required for rate calculations and label generation.

FedEx

FieldDescription
EnabledToggle to activate FedEx as a carrier.
SandboxWhen enabled, uses FedEx sandbox API. Disable for live shipments.
API KeyYour FedEx API Key from the FedEx Developer Portal. Stored encrypted.
Account NumberYour FedEx account number. Required for negotiated rates and label printing.

UPS

FieldDescription
EnabledToggle to activate UPS as a carrier.
SandboxWhen enabled, uses UPS Customer Integration Environment (CIE). Disable for production.
API KeyYour UPS OAuth API Key from the UPS Developer Portal. Stored encrypted.
Account NumberYour UPS account number (6 alphanumeric characters).

USPS

FieldDescription
EnabledToggle to activate USPS as a carrier.
SandboxWhen enabled, uses USPS sandbox. Disable for live shipments.
API KeyYour USPS Web Tools API Key. Register at the USPS Developer Portal. Stored encrypted.
Account NumberYour USPS account identifier.

Each carrier card has two buttons: "Test Connection" (verifies API credentials) and "Save Config" (stores the configuration). Also includes a collapsible "How to configure" guide with step-by-step instructions specific to each carrier.

Marketplaces

Sync orders and labels with e-commerce platforms. When connected, orders from marketplaces are automatically imported as shipments.

Mercado Libre

FieldDescription
App IDYour Mercado Libre application ID. Create an app at the Mercado Libre Developers Portal.
Client SecretYour Mercado Libre Client Secret. Stored encrypted.
Connection StatusShows Connected or Not Connected. Click "Connect" to initiate OAuth flow and authorize your Mercado Libre account.

Setup steps:

  1. Register as a developer at developers.mercadolibre.com
  2. Create a new application
  3. Set the redirect URI to: https://yourdomain.com/integrations/mercadolibre/callback
  4. Copy the App ID and Client Secret into Settings → Integrations → Marketplaces
  5. Click "Connect" to authorize and start syncing orders

Public Rate Calculator

Allow anyone to get a shipping quote without logging in. Customers can calculate rates and proceed to book a shipment after authenticating.

FieldDescription
Enable Public CalculatorToggle to make the rate calculator accessible at /rate without authentication. A "Calculate Rates" button also appears on the login page when enabled.
Public URLThe public URL where the calculator is accessible: https://yourdomain.com/rate. This is read-only and auto-generated from your APP_URL.

Calculator Uses Your Rates

The public calculator uses the same rate tables and services configured in Settings → Services and Settings → Shipping Configuration. Make sure your rates are configured before enabling the public calculator.

Maps Configuration

Configure map providers for the Dispatch module. Maps display driver locations, delivery routes, and geofence zones in real time.

FieldDescription
Default Map ProviderSelect the primary map provider: Mapbox (default, requires access token), Google Maps (requires paid API key), or OpenStreetMap (free, no key required, used as automatic fallback).
Mapbox Access TokenYour Mapbox access token. Get one for free at account.mapbox.com. Free tier includes 50,000 map loads/month.
Google Maps API KeyYour Google Maps JavaScript API key. Get from Google Cloud Console. Requires a billing account (pay-as-you-go). Enable "Maps JavaScript API" and "Directions API".
Default LatitudeInitial latitude for the map center when no drivers have GPS locations (e.g., 4.6097 for Bogota).
Default LongitudeInitial longitude for the map center (e.g., -74.0817 for Bogota).
Zoom LevelInitial zoom level (1–20). 1 = world view, 12 = city level, 18 = street level. Recommended: 12.

Automatic Fallback

If no map provider is configured or the API keys are missing/invalid, the system automatically falls back to OpenStreetMap (free, no key required). This ensures maps always work even without paid provider keys.

13. HS Codes

Path: Settings > HS Codes

Manage Harmonized System (HS) codes for international shipments. HS codes are required for customs declarations when shipping across borders.

HS Code Database

The system includes a searchable database of standard HS codes. You can search by code number or description. When creating an international shipment, operators select the appropriate HS code for each item in the package.

Add Custom HS Code

Add custom HS codes for products specific to your business. Enter the code (6-10 digits), description, and optionally the duty rate percentage. Custom codes appear alongside standard codes in the shipment form.

Import / Export

Import HS codes from a CSV file or export your current database for backup. CSV format: code, description, duty_rate.

14. Shipping Configuration

Path: Settings > Shipping Configuration

Configure shipping rules, rate calculation methods, packaging types, and delivery zones. This is the core configuration for how your logistics operation calculates prices.

Rate Calculation Method

Choose how rates are calculated: Weight-based (price per kg), Volumetric (dimensional weight), Zone-based (origin-destination zones), Flat rate (fixed price per service), or Carrier API (real-time rates from connected carriers like DHL, FedEx, UPS).

Volumetric Factor

The divisor used to calculate volumetric weight: (L × W × H) / factor. Industry standard: 5000 for courier, 6000 for air freight. The system charges the greater of actual weight vs. volumetric weight.

Zones & Rate Tables

Define delivery zones (e.g., Local, Regional, National, International) and set rate tables for each zone. Rates can vary by service type, weight bracket, and zone combination.

Packaging Types

Define available package types (Envelope, Box Small, Box Medium, Box Large, Pallet, Custom). Each type can have predefined dimensions and a base surcharge.

Surcharges

Configure additional fees: fuel surcharge (percentage), insurance (percentage of declared value), residential delivery fee, weekend/holiday delivery, oversized package fee, dangerous goods handling.

15. Lockers & Codes

Path: Settings > Lockers & Codes

Manage smart locker integrations and delivery verification codes. Lockers provide 24/7 self-service pickup points for recipients.

Locker Locations

Define physical locker locations with name, address, GPS coordinates, and number of compartments. Lockers appear as delivery options when creating shipments near the locker address.

Verification Codes

Configure how delivery verification codes are generated and sent. Options: Auto-generate (system creates a random 6-digit code), Manual (operator enters a code). The code is sent via SMS/WhatsApp to the recipient for pickup authentication.

Code Expiry

How long a verification code remains valid. Default: 48 hours. After expiry, the package is returned to the sender or transferred to a branch.

16. Tracking & Numbers

Path: Settings > Tracking & Numbers

Configure tracking number formats, auto-generation rules, and the public tracking page appearance.

Tracking Number Format
tracking.format

Define the format for auto-generated tracking numbers. Default: TRK{NNNNNNNN} where N = random digit. You can customize the prefix (e.g., your company initials) and the number of digits. Example: DPX00814726.

Invoice Number Format
tracking.invoice_format

Format for auto-generated invoice numbers. Default: INV-{YYYY}-{NNNN}. Example: INV-2026-0042.

Tracking Page Visibility
tracking.public

Public — anyone with the tracking number can access the page without logging in. Private — requires the customer to log in.

Tracking URL
tracking.url

The public tracking URL sent in notifications: https://yourdomain.com/track/{tracking_number}. Auto-generated from your APP_URL.

Show Sender Name
tracking.show_sender

Whether to display the sender's name on the public tracking page. Disable for privacy (gift shipments, confidential B2B).

Show Weight & Dimensions
tracking.show_dimensions

Whether to show package weight and dimensions on the tracking page.

Barcode Type
tracking.barcode_type

The barcode format used on printed labels and PDF labels. Options: Code 128 (default, compact), QR Code (scannable with any phone camera), Code 39 (legacy compatibility).

17. Billing

Path: Settings > Billing

Configure payment gateways for shipment payments and SaaS wallet recharges. All API keys are stored encrypted in the database using Laravel's Crypt::encryptString().

Stripe

Accept credit/debit card payments worldwide via Stripe. Supports 135+ currencies, 3D Secure, Apple Pay, and Google Pay.

FieldDescription
Enable StripeToggle to activate Stripe as a payment method for shipment payments and SaaS wallet recharges.
Test ModeWhen enabled, uses Stripe test keys — no real charges. Use card 4242 4242 4242 4242 for testing. Disable for live payments.
Publishable KeyYour Stripe publishable key (starts with pk_test_ or pk_live_). Found in Stripe Dashboard → Developers → API Keys. This key is used in the browser — safe to expose.
Secret KeyYour Stripe secret key (starts with sk_test_ or sk_live_). Never share publicly. Stored encrypted in the database.
Webhook SecretYour Stripe webhook signing secret (starts with whsec_). Used to verify webhook signatures. Found in Stripe Dashboard → Developers → Webhooks → Signing secret.

Webhook setup:

  1. Go to Stripe Dashboard → Developers → Webhooks
  2. Click "Add endpoint"
  3. Endpoint URL: https://yourdomain.com/my-billing/webhook/stripe
  4. Select events: checkout.session.completed, payment_intent.succeeded, charge.refunded
  5. Copy the Signing secret and paste it as Webhook Secret in Settings

How Stripe Works

When a customer selects "Pay online", a Stripe Checkout session is created. The customer is redirected to Stripe's hosted payment page. On success, the webhook (/my-billing/webhook/stripe) receives the event, verifies the signature using Stripe-Signature header, and credits the wallet or marks the shipment as Paid. All webhook payloads are verified with the signing secret for security.

PayPal

Accept payments via PayPal. Customers can pay using their PayPal account or credit/debit card through PayPal Checkout.

FieldDescription
Enable PayPalToggle to activate PayPal as a payment method.
Sandbox ModeWhen enabled, uses PayPal sandbox credentials — no real charges. Disable for live payments.
Client IDYour PayPal REST API Client ID. Found in PayPal Developer Dashboard → Apps & Credentials.
Client SecretYour PayPal REST API Secret. Never share this key publicly. Stored encrypted.

Setup steps:

  1. Go to PayPal Developer Dashboard
  2. Create a new REST API app (or use an existing one)
  3. Toggle between Sandbox and Live mode
  4. Copy the Client ID and Secret
  5. Paste them in Settings → Billing → PayPal
  6. For production, set the webhook URL: https://yourdomain.com/my-billing/webhook/paypal

Paystack

Accept payments via Paystack — cards, bank transfers, USSD, and mobile money. Popular in Africa (Nigeria, Ghana, South Africa, Kenya).

FieldDescription
Enable PaystackToggle to activate Paystack as a payment method for shipment payments and SaaS wallet recharges.
Test ModeWhen enabled, uses Paystack test keys — no real charges. Disable for live payments.
Public KeyYour Paystack publishable key (starts with pk_test_ or pk_live_). Found in Paystack Dashboard → Settings → API Keys.
Secret KeyYour Paystack secret key (starts with sk_test_ or sk_live_). Never share publicly. Stored encrypted in the database.

Webhook setup:

  1. Go to Paystack Dashboard → Settings → API Keys & Webhooks
  2. Set Webhook URL: https://yourdomain.com/my-billing/webhook/paystack
  3. The system verifies all webhook payloads using HMAC SHA-512 with your Secret Key

How Paystack Works

When a customer selects "Pay online", they are redirected to Paystack Checkout. On successful payment, the system receives a webhook verified with HMAC SHA-512, and the shipment is marked as Paid or wallet is credited automatically. Supports cards, bank transfers, USSD, and mobile money.

18. Audit Log

Path: Settings > Audit Log

View a chronological record of all significant actions taken in the system. The audit log tracks who did what, when, and from which IP address.

Log Entries

Each entry records: User (who performed the action), Action (created, updated, deleted, login, etc.), Model/Resource (shipment, invoice, user, etc.), Changes (old value → new value for updates), IP Address, and Timestamp.

Filters

Filter audit logs by user, action type, date range, or resource type. Useful for security investigations ("who changed this shipment?") or compliance audits.

Export

Export audit logs to CSV for external analysis or compliance documentation.

Retention

Audit logs are retained indefinitely by default. For organizations with high volume, consider periodic cleanup of logs older than 12 months via the Maintenance section.

19. Maintenance

Path: Settings > Maintenance

System maintenance tools for administrators and technical staff. Access restricted to Super Admin role.

System Actions

Database Backup

Triggers a manual database dump (SQL file) that is stored in storage/app/backups/ and optionally uploaded to your configured S3 bucket. File name includes timestamp. Download link is provided after completion. Best practice: Set up automated daily backups at the OS level as well.

Clear Application Cache

Runs php artisan cache:clear. Clears the Redis/file application cache including settings cache, query results cache, and computed values. Run after making manual database changes or troubleshooting stale data.

Clear Compiled Views

Runs php artisan view:clear. Clears the compiled Blade template cache. Rarely needed — only if you've edited Blade PDF templates and changes aren't appearing.

Maintenance Mode Toggle

Enables Laravel maintenance mode (php artisan down). All users see a maintenance page until you disable it. A secret token URL is provided so you can still access the app during maintenance. Warning: Enabling this blocks all users including admins from normal access.

System Information

Displays: PHP version, Laravel version, database size, storage space used, current queue depth, number of failed jobs, and server memory/CPU usage (if accessible). Useful for diagnosing performance issues.

20. Updates

Path: Settings > Updates

Manage your software license and apply updates to keep Deprixa Plus current. This module integrates with the license server.

License Activation

Purchase Code / License Key
license.purchase_code

Enter your purchase code (Envato) or license key. Click Activate License. The system calls the license server to validate the code against your registered installation domain. On success, license details are stored and update checking is enabled. Misconfiguration: If the domain registered with your license doesn't match the APP_URL in .env, activation will fail. Contact support to transfer the license to a new domain.

License Status

Displays: Active with expiry date for a valid license, Expiring Soon if within 30 days of expiry, or Expired. Expired licenses continue to run the current version but cannot check for or apply updates until renewed.

Renewal CTA

When expired, a prominent renewal button links to the purchase page. After renewal, enter the new license key to reactivate.

Software Updates

Check for Updates

Queries the LicenseBox API for the latest available version. If a newer version is available, an update banner is shown with the new version number and a changelog summary.

Update Available Banner

When an update is available, a banner shows: current version, new version number, update size, and a summary of changes from the changelog.

Apply Update Button

Initiates the update process. The system: 1) Downloads the update package, 2) Backs up current files and database, 3) Applies the update files, 4) Runs database migrations, 5) Clears caches. A real-time log terminal is shown during the process.

Update Progress Terminal

A scrolling log terminal shows each update step in real time. If an error occurs, the terminal shows the error message and the system attempts to roll back to the pre-update backup automatically.

Always Back Up Before Updating

Although the update process creates an automatic backup, always create a manual backup of your database and files before applying major updates. Test updates on a staging environment first. Updates applied in production cannot be easily reversed if something goes wrong.