Manual Order Creation
Create orders manually through the WordPress admin panel for phone orders, offline sales, system migrations, or special customer requests.
Overview
The manual order creation tool lets administrators create service orders outside the normal checkout flow. This is useful for processing phone orders, importing legacy data, handling offline payments, or accommodating special customer situations.
Page Location: WordPress Admin → WP Sell Services → Orders → Create Order
Access Required: manage_options capability (administrators only)

When to Use Manual Orders
Create manual orders for:
- Phone Orders: Customer places order over the phone
- Offline Payments: Payment received via bank transfer, cash, or check
- Data Migration: Importing orders from another system
- Special Arrangements: Custom pricing or package arrangements
- Testing: Creating test orders for development
Manual orders function identically to regular orders once created.
Accessing the Create Order Page
- Go to WP Sell Services → Orders in WordPress admin
- Click Create Order button
- Manual order form opens (page slug:
wpss-create-order)
Note: This is a hidden submenu page – not visible in the WordPress admin menu. Only accessible via the Create Order button.
Creating a Manual Order
Step 1: Select Service and Package
Service Selection:
- Choose from all published services
- Dropdown shows: Service Title (Vendor Name) – Starting Price
- Service must have
publishpost status
Package Selection:
- After selecting service, available packages load
- Packages auto-fill:
- Leave empty to use service starting price
Step 2: Select Addons
Loading Addons:
Addons load automatically when you select a service via AJAX action: wpssgetservice_addons
Addon Information Shown:
- Title and description
- Price and price type
- Min/max quantity
- Delivery days added
- Required status
Addon Selection:
- Check addon to include
- Set quantity (for quantity-based addons)
- Price calculates automatically
Step 3: Select Customer and Vendor
Customer (Buyer):
- Required field
- Select from all WordPress users
- Shows display name and email
Vendor Override:
- Optional field
- Defaults to service author if left empty
- Useful for reassigning orders to different vendors
- Cannot be same as customer
Step 4: Configure Pricing
Pricing Summary Table:
- Subtotal: Package base price
- Addons Total: Sum of selected addon prices
- Order Total: Subtotal + Addons Total (or manual override)
- Commission Rate: Platform fee percentage (default from global settings)
- Platform Fee: Calculated from total × commission rate
- Vendor Earnings: Total – Platform Fee
Manual Total Override:
- Check “Override total manually” to set custom total
- Input field enables when checked
- Useful for discounts or custom pricing
Commission Rate:
- Defaults to global commission rate from
CommissionService::getglobalcommission_rate() - Can be adjusted per-order (0-100%)
- Affects platform fee and vendor earnings calculations
Currency:
- Select from 25 supported currencies
- Defaults to global currency from
wpssgetcurrency() - Includes: USD, EUR, GBP, INR, AUD, CAD, JPY, and 18 more
Step 5: Set Status and Payment Details
Order Status:
Available initial statuses:
| Status | Description |
|---|---|
pending_payment | Payment not yet received |
pending_requirements | Payment complete, awaiting buyer requirements |
in_progress | Skip requirements, vendor starts immediately |
delivered | Create order with delivery already submitted |
completed | Create already-completed order |
Smart Status Logic:
If you select pendingrequirements but the service has no requirements defined, the order automatically transitions to inprogress status. You’ll see a notification: “Note: This service has no requirements defined. Order was set to ‘In Progress’ automatically.”
Payment Status:
| Status | Description |
|---|---|
pending | Payment not received |
paid | Payment received (default) |
failed | Payment failed |
refunded | Payment refunded |
Payment Method:
| Method | Use For |
|---|---|
manual | Default for admin-created orders |
bank_transfer | Bank transfer payments |
cash | Cash payments |
other | Other payment methods |
Transaction ID:
- Optional reference number
- Enter external payment reference (e.g., bank transaction ID)
- Stored in
transaction_idfield
Delivery Days:
- Number of days until delivery deadline
- Auto-fills from selected package
- Can be manually adjusted
- Used to calculate
deliverydeadlineif order status isinprogress
Revisions Included:
- Number of revisions buyer can request
- Auto-fills from selected package
- Can be manually adjusted
- Default: 2 revisions
Step 6: Add Admin Notes
Internal Notes:
- Textarea for internal notes about the order
- Not visible to customer or vendor
- Stored as system message in order conversation
- Format:
[Admin Note] Your note text here - Uses
ConversationService::addsystemmessage()
Example Notes:
- “Phone order from customer on 2024-01-15”
- “Migrated from old system – Order #OLD-123”
- “Custom pricing approved by manager”
- “Special rush delivery requested”
Order Creation Process
When you click Create Order, the following happens:
1. Data Validation
- Service ID and Customer ID required
- Service must exist and be type
wpss_service - Customer cannot be same as vendor
- Amount must be greater than zero (minimum $10.00 fallback)
2. Addon Processing
- Selected addons validated via
ServiceAddonService::get() - Addon prices calculated using
ServiceAddonService::calculate_price() - Addon delivery days added to total delivery time
3. Commission Calculation
- Commission rate validated (0-100%)
- Platform fee = Total × (Commission Rate / 100)
- Vendor earnings = Total – Platform Fee
4. Deadline Calculation
- If status is
inprogressand deliverydays > 0: - Otherwise, deadline fields remain null
5. Order Number Generation
- Format:
WPSS-+ 8 random uppercase characters - Example:
WPSS-A7K9M2X4 - Generated using
wpgeneratepassword(8, false)
6. Database Insert
Order record inserted into wpss_orders table with fields:
array(
'order_number' => 'WPSS-A7K9M2X4',
'customer_id' => (int),
'vendor_id' => (int),
'service_id' => (int),
'package_id' => (int|null),
'platform' => 'manual',
'platform_order_id' => null,
'transaction_id' => (string|null),
'addons' => JSON,
'subtotal' => (float),
'addons_total' => (float),
'total' => (float),
'currency' => (string),
'status' => (string),
'payment_method' => (string),
'payment_status' => (string),
'commission_rate' => (float),
'platform_fee' => (float),
'vendor_earnings' => (float),
'revisions_included' => (int),
'revisions_used' => 0,
'delivery_deadline' => (datetime|null),
'original_deadline' => (datetime|null),
'started_at' => (datetime|null),
'paid_at' => (datetime|null),
'completed_at' => (datetime|null),
'created_at' => (datetime),
'updated_at' => (datetime),
)
7. Conversation Creation
- Order conversation created via
ConversationService::createfororder() - Admin notes added as system message if provided
8. WordPress Hooks Fired
do_action( 'wpss_order_created', $order_id, $status );
do_action( 'wpss_order_status_changed', $order_id, $status, '' );
do_action( "wpss_order_status_{$status}", $order_id, '' );
9. Success Response
Returns JSON with:
order_id– Database ID of created orderorder_number– Generated order numberstatus– Order statusviewurl– URL to view order (viawpssgetorderurl())requirements_url– URL to requirements formrequirements_skipped– Boolean if requirements auto-skippedhas_requirements– Boolean if service has requirements
After Order Creation
Success Screen Shows:
- Order created confirmation message
- Order number and ID
- View Order button – Opens order detail page
- Submit Requirements button – Shows if service has requirements and status is
pending_requirements - Create Another Order button – Resets form
Next Steps:
- If status is
pending_requirements: - If status is
in_progress: - If status is
deliveredorcompleted:
Manual Order Fields Reference
Required Fields
- Service
- Customer (Buyer)
Auto-Calculated Fields
- Order Number (generated)
- Subtotal (from package or service)
- Platform Fee (from commission rate)
- Vendor Earnings (total – platform fee)
- Delivery Deadline (from delivery days if in_progress)
Optional Override Fields
- Vendor (defaults to service author)
- Total (calculated unless manually overridden)
- Commission Rate (defaults to global rate)
- Currency (defaults to global currency)
- Payment Method (defaults to ‘manual’)
- Transaction ID
- Delivery Days (defaults from package)
- Revisions (defaults from package)
- Admin Notes
Common Use Cases
Phone Order
- Customer calls with order request
- Admin creates manual order
- Status:
pending_paymentorpaiddepending on payment - Payment Method: Bank transfer or other
- Add admin note: “Phone order from [customer name] on [date]”
Offline Payment
- Payment received outside platform (bank transfer, cash)
- Create order with status:
paid - Payment Status:
paid - Transaction ID: Bank reference number
- Admin note: Payment method details
Data Migration
- Import orders from old system
- Create multiple manual orders
- Status:
completedfor historical orders - Admin notes: “Migrated from [old system] – Original order ID: [old_id]”
Custom Pricing
- Negotiate special price with customer
- Create order with package
- Enable “Override total manually”
- Set custom total
- Adjust commission rate if needed
- Admin note: “Custom pricing approved by [manager name]”
Limitations
- Cannot bulk create orders (one at a time)
- No draft/save functionality (must complete creation)
- Cannot edit orders after creation (use order edit page)
- No customer notification sent automatically (manual orders are platform=’manual’)
Technical Details
AJAX Actions:
wpsscreatemanual_order– Creates the orderwpssgetservice_addons– Loads addons for selected service
JavaScript Object:
wpssManualOrder localized with:
ajaxUrl– AJAX endpointnonce– Security noncedefaultCommissionRate– Global commission ratecurrencyFormat– Currency display formati18n– Translated strings
Nonce Action:
- Action:
wpsscreatemanual_order - Verified with
checkajaxreferer()
Database Tables:
wpss_orders– Order recordwpss_conversations– Order conversation
Minimum Order Total:
If calculated total is 0 or negative, falls back to $10.00 minimum.
Next Steps
- Order Management – Managing orders after creation
- Vendor Management – Managing vendor accounts
- Commission System – Understanding platform fees
