CreditKit Pro settings reference
CreditKit Pro 2.2.0 puts every store-wide option on one screen at Credit System → Settings. That screen has seven tabs: General, Features, Purchase Options, Display, Rewards, Advanced and Shortcodes. Six of them hold saved settings, and Shortcodes is a read-only reference table.
All six input tabs share one form, so Save Changes writes every tab at once. Each input tab carries a “Reset this tab to defaults” link that restores only that tab’s keys. The page requires the manage_options capability, so shop managers cannot open it. The Setting column below is the key stored in the pcs_settings option, the UI label is the on-screen text, and defaults are the values seeded on activation.
General tab
| Setting | UI label | Default | What it changes |
|---|---|---|---|
global_expiry_days | Global Credit Expiry Days | 365 | Days a purchased credit stays spendable, store-wide. Entering 0 means purchased credits never expire. |
allow_decimal_credits | Allow Decimal Credits | Off | Lets balances hold fractional credits instead of whole tokens. Existing rows are not converted. |
decimal_places | Decimal places | 1 | Decimal places on a credit figure. Accepts 1 to 4, and stays greyed out until Allow Decimal Credits is on. |
buy_credit_page_id | Buy Credit Page | 0, no page selected | The page that buy-credits links point at. That page needs the [pcs_credit_bundles] shortcode to render anything. |
credit_price_ratio | Credit value | 0 | The store-currency value of one credit. The Dashboard multiplies outstanding credits by this number for the liability card, and 0 hides that card. |
refund_credit_rate | Goodwill credit rate | 1 | Credits issued per 1 unit of store currency when an administrator uses the Issue store credit box on an order. |
Global Credit Expiry Days overrides every bundle
Each credit bundle carries its own Expiry Days field, and that per-bundle number is what customers are shown. In CreditKit Pro 2.2.0 the per-bundle number never reaches the ledger. PCS_Bundle_Manager::process_bundle_purchase() uses the global setting whenever the global_expiry_days key exists, and activation seeds that key to 365 on every upgrade.
The product page credit summary card and the [pcs_credit_bundles] grid both read the per-bundle Expiry Days column, so a bundle configured for 30 days advertises 30 days while the ledger records the global 365. Set Global Credit Expiry Days to the number you intend to honour, then copy it into every bundle’s Expiry Days field.
Features tab
The Features tab is the module switchboard. Turning a module off stops its admin screens and front-end surfaces from registering.
| Setting | UI label | Default | What it changes |
|---|---|---|---|
enable_teams | Groups & Budgets | Off | Registers the Groups & Budgets screen, shared team budgets and the approval workflow. When off, that menu item and its cron job do not register. |
enable_account_credit_request | Team credit requests | Off | Adds a Request credits endpoint at /my-account/credit-request/. The checkbox stays disabled until Groups & Budgets is on. The [pcs_credit_request] shortcode works either way. |
enable_rewards | Rewards | Off | The master gate for every reward rule. This key sits on the Features tab, not on the Rewards tab. |
enable_gamification | Gamification | Off | Registers badges, achievements and the [pcs_badges] shortcode. Badges award no credits. |
enable_notifications | Notifications | Off | Allows CreditKit to email customers and show on-site notices about their balance. No balance email is sent on a fresh install. |
notification_threshold | Low-balance threshold | 5 credits | The balance at or below which the low-balance notice fires. |
low_credit_message | Low Credit Email | Empty | Body of the low-balance email. Placeholders: {user_name}, {login}, {balance}, {site_name}, {site_url}. Blank uses the built-in copy. |
expiring_credit_message | Expiring Credits Email | Empty | Body of the expiring-credits email. Placeholders: {user_name}, {login}, {expiring_amount}, {days}, {site_name}, {site_url}. |
backup_failure_notifications | Failure alerts | On | Emails the WordPress admin address when a scheduled credit backup errors. This alert is separate from customer Notifications. |
Two rows on this tab carry no checkbox. Backups reports an on or off status and links to Credit System → Security → Credit Backups. API & webhooks links out to the key and subscription screens.
Purchase Options tab
| Setting | UI label | Default | What it changes |
|---|---|---|---|
credit_order_status | Credit Addition Order Status | completed | The order status that triggers the credit grant. Credits are added on the transition into this status, once per order. |
disable_coupon_on_credits | Disable Coupon on Credits | On | Rejects coupon codes on carts holding a credit bundle. |
hidden_payment_gateways | Hide Payment Gateways for Credits | Empty list | Ticked gateways disappear at checkout when the cart holds a credit bundle. The credit gateway is never listed here. |
enable_woocommerce_sync | Enable WooCommerce Sync | Off | Mirrors each credit bundle into a WooCommerce product so bundles reach the cart. Editing either side updates the other. |
Display tab
The Display tab absorbed the old Labels tab in 2.2.0, so credit wording now lives here.
| Setting | UI label | Default | What it changes |
|---|---|---|---|
hide_prices_credit_products | Hide currency prices on Credit Bundle products | Off | Suppresses the WooCommerce money price on bundle-linked products across shop, product page and cart. The credit amount still renders. |
pcs_hide_what_you_get_card | Credit summary card | Off, so the card shows | Hides the credit summary card on every credit-bundle product page. Hide one bundle instead with the pcs-hide-summary CSS class. |
credit_icon_type | Icon Source | library | Chooses the icon source. Accepted values are library, custom and emoji. |
credit_icon_key | Built-in icon grid | coins | Which built-in icon renders when Icon Source is library. |
credit_icon_attachment_id | Select / Upload icon | 0 | Media attachment used when Icon Source is custom. Uploaded SVG files are stripped of scripts. |
credit_icon_emoji | Emoji / symbol | A lightning bolt glyph | The glyph used when Icon Source is emoji. The field accepts up to 8 characters. |
hide_buy_credits_account | Hide Buy Credits from My Account | Off | Removes the credits tab from the My Account menu and removes the buy prompt from the balance widget and the credits dashboard. |
show_credits_log_account | Show Credits log on My Account | On | Shows the transaction history block in the My Account credits dashboard. |
credits_label_singular | For Credit (Singular) | Credit | Singular noun printed beside a credit figure. |
credits_label_plural | For Credits (Plural) | Credits | Plural noun printed beside a credit figure. |
my_account_label | My Account Label | Buy Credits | Menu title of the CreditKit tab inside WooCommerce My Account. |
expire_label | Expire Days Label | Expires | Word placed in front of an expiry date or duration. |
credit_summary_title | Credit summary title | Credit summary | Heading above the credit, bonus and expiry list on a bundle product page. A blank field restores the built-in heading. |
Credit prices always render as icon, then number, then label. The old Credit Price Template field and its {credits} and {label} tokens were removed in 2.2.0.
Rewards tab
The Rewards tab holds one saved setting in 2.2.0. Reward amounts moved to Credit System → Rewards, and the seven old numeric and colour keys were dropped from the schema.
| Setting | UI label | Default | What it changes |
|---|---|---|---|
rewards_require_approval | Require Manual Approval | Off | Sends every reward grant to the approvals queue, overriding the per-rule “Requires approval” flag. |
The rest of the tab is read-only. A status line reports whether Rewards is on, and a Manage Reward Rules button opens Credit System → Rewards.
Advanced tab
| Setting | UI label | Default | What it changes |
|---|---|---|---|
remove_data_on_uninstall | Remove all plugin data on uninstall | Off | Records an opt-in to data deletion. CreditKit Pro 2.2.0 ships no uninstall routine, so ticking the box deletes nothing today. |
debug_mode | Debug Mode | Off | Records a debug preference. No 2.2.0 code path reads this key, so use the WordPress WP_DEBUG_LOG constant for logging. |
enable_cache | Cache Settings | On | Records a caching preference. Balance caching runs through the WordPress object cache and ignores this key. |
cache_duration | Cache Duration (minutes) | 60 | Records a cache lifetime in minutes. No 2.2.0 code path reads this key. |
The Advanced tab also carries a Download Settings JSON button, which exports the current pcs_settings values filtered to known keys. There is no matching import button.
Shortcodes tab
The Shortcodes tab lists the eight shipped shortcodes with their attributes and a Copy button for each, and saves nothing. The listed tags are [pcs_user_account_credits], [pcs_credit_balance], [pcs_credits_log], [pcs_credit_bundles], [pcs_buy_credit_url], [pcs_badges], [pcs_credit_request] and [pcs_pdp_credit_card]. Older tags such as [credit_balance] still work and route to the canonical tags.
Which settings live outside this page?
| What you want to change | Where it lives |
|---|---|
| Checkout title, description and on or off state of the credit gateway | WooCommerce → Settings → Payments → Credit Payment |
| Fraud scoring, monitoring, blocking rules, security alerts, blocked users and IPs | Credit System → Security |
| Per-tier spending limits and emergency mode | Credit System → Security → Spending Limits |
| Backup schedule, manual backups, balance reconciliation | Credit System → Security → Credit Backups |
| Reward rules, reward amounts, the approvals queue | Credit System → Rewards |
| Webhook subscriptions and API keys | Credit System → API & Webhooks |
| Whether one product sells for money, credits or either, plus its credit price | The Product data panel on each product |
| One bundle’s credits, bonus and expiry days | Credit System → Credit Bundles |
How do I sell credits instead of products in WooCommerce?
Selling a catalogue in credits takes four steps.
- Create the packs customers buy. In Credit System → Credit Bundles, add a bundle with a credit amount and a money price. Tick Enable WooCommerce Sync on the Purchase Options tab so each bundle becomes a purchasable product.
- Give customers somewhere to buy. Create a page containing
[pcs_credit_bundles], then select it under Buy Credit Page on the General tab. - Turn on the gateway. In WooCommerce → Settings → Payments, enable Credit Payment. The gateway only appears at checkout when the cart will actually be paid in credits.
- Price the catalogue in credits. Edit a product, open the Product data panel, and pick “Sell for credits only” or “Either money or credits (customer chooses)” under Credit payment options. Type the number of credits into Price in credits. Repeat per product, or tick the credits-only box on a product category so its products inherit the setting.
Type an explicit number into Price in credits rather than trusting the auto-filled placeholder. That placeholder multiplies the money price by credit_price_ratio, while the Dashboard liability figure treats the same key as the currency value of one credit. Those readings are inverses, so the auto-filled price is only correct when credit_price_ratio is 1.
The money price stays on the product after a credit price is set. WooCommerce keeps using it for tax, shipping and refund maths even when the customer pays entirely in credits.
Which settings should I change first?
Four defaults are wrong for most shops.
- Global Credit Expiry Days ships at 365. Set the expiry you intend to honour, then copy that number into every bundle’s Expiry Days field.
- Notifications ships off, so nobody is warned about a low balance until the module is on and the Low-balance threshold is set.
- Credit value ships at 0, which hides the outstanding-liability card on the Dashboard.
- Credit Addition Order Status ships as completed. Change it to processing to grant credits before fulfilment.
What this doesn’t do
- A per-bundle Expiry Days value does not override Global Credit Expiry Days. The store-wide number is what the ledger writes.
- The Shortcodes tab saves nothing; it is a copyable reference table.
- The Advanced tab has no queue tuning, no CDN options, no API log retention control, and no cache time-to-live that 2.2.0 reads.
- The settings screen cannot import a settings JSON file. Export is one-way.
- Ticking Remove all plugin data on uninstall deletes no balances or transactions, because 2.2.0 registers no uninstall routine.
- Credit value does not change what a customer pays for a bundle. Bundle prices are set in Credit System → Credit Bundles.