Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/own-pay/OwnPay-Documentation/llms.txt

Use this file to discover all available pages before exploring further.

The Currencies & Rates panel governs how OwnPay prices and converts transactions across your brand’s checkout flows. Every brand operates with a single base (default) currency that anchors its ledger, reporting, and invoice totals. When customers pay in a different currency, OwnPay applies the configured exchange rate to calculate the correct amount. Administrators also control how long a checkout session stays alive before expiring and how many days an invoice remains open before becoming overdue. In the OwnPay admin dashboard, expand the GATEWAYS section in the left sidebar and click Currencies & Rates. The settings panel opens with currency, exchange rate, and lifecycle controls grouped on a single page.

Base Currency

The Default Currency is the primary denomination for all transactions, ledger entries, and report totals on your brand. Select it from the dropdown — OwnPay supports all major ISO 4217 currency codes. Once transactions have been recorded under a currency, changing the default will affect how historical amounts are reported, so set this value carefully before you go live.

Supported Currencies

The following currencies are available as the default base currency:
CodeCurrencySymbol
BDTBangladeshi Taka
USDUS Dollar$
EUREuro
GBPBritish Pound£
INRIndian Rupee
OwnPay stores currency codes following the ISO 4217 three-letter standard. Always use the three-character code (e.g. BDT, USD) when referencing currencies in API calls or plugin configurations — do not use currency symbols.

Exchange Rate Configuration

When a customer’s checkout is denominated in a currency different from your brand’s default, OwnPay applies an exchange rate to convert the value. Two modes are available:

Automatic Rates

OwnPay periodically fetches live conversion rates from a public exchange rate API and updates them automatically. Requires a running server cron job.

Manual Rates

You hardcode a fixed conversion factor for each currency pair directly in the settings. Rates stay static until you change them.

Changing the Exchange Rate Mode

1

Open Currencies & Rates

Navigate to Gateways → Currencies & Rates in the admin sidebar.
2

Select your exchange rate mode

Open the Exchange Rate Update dropdown and choose either Automatic or Manual.
3

Save settings

Click Save Settings to apply the change immediately.
4

If using Automatic — verify your cron job

Confirm that the server’s scheduled task runner is active. The cron job must execute at regular intervals (recommended: every hour) for automatic rates to refresh.
If you select Automatic exchange rate updates but your server’s cron job scheduler is not running, OwnPay will continue to use stale cached rates. Verify your cron configuration after enabling automatic updates, especially on new installations.

Changing the Base Currency

1

Open Currencies & Rates

Navigate to Gateways → Currencies & Rates.
2

Open the Default Currency dropdown

Click the Default Currency dropdown and select your desired base currency (e.g. USD – US Dollar).
3

Save settings

Click Save Settings. All new transactions, invoices, and report calculations will now use the selected currency as the base denomination.
Changing the base currency after transactions have already been recorded will cause inconsistencies in financial reports and ledger totals. Historical entries remain in the original currency, while new entries use the updated one. Only change the default currency before your brand processes its first live payment.

Payment Lifecycle Settings

Beyond currency, the Currencies & Rates panel controls two important timing settings that affect the customer payment experience.

Payment Expiry

The Payment Expiry (minutes) setting defines how long a customer’s checkout page remains active before it automatically expires. Once expired, the transaction status transitions to cancelled or expired, and the checkout link becomes invalid.
  • Minimum: 5 minutes
  • Maximum: 1,440 minutes (24 hours)
  • Default: 30 minutes
Set the expiry to at least 15–30 minutes to give customers enough time to navigate their mobile banking app, complete the transfer, and submit their transaction ID. Expiry times under 10 minutes frequently lead to abandoned checkouts, especially for manual wallet gateways.

Invoice Due Days

Invoice Due Days sets the default number of days from the invoice creation date before a customer invoice becomes overdue. This applies to invoices issued directly from the Payments → Invoices section.
  • Minimum: 1 day
  • Maximum: 365 days
  • Default: 7 days

Auto-Approve Verified Payments

The Auto-approve verified payments toggle controls whether transactions that are matched via SMS parsing are completed automatically without manual administrator review.
StateBehaviour
EnabledWhen an incoming SMS matches a pending transaction’s ID and amount, the transaction is automatically marked completed and the ledger is updated.
DisabledMatched transactions are flagged for review but remain in a pending state until an administrator manually approves them.

Settings Reference

SettingTypeRange / OptionsDefaultDescription
Default CurrencySelectISO 4217 codesBDTBase denomination for all brand transactions and reports.
Exchange Rate UpdateSelectAutomatic, ManualAutomaticMethod used to retrieve or set currency conversion rates.
Payment Expiry (minutes)Number5 – 144030Checkout session lifespan before auto-cancellation.
Invoice Due DaysNumber1 – 3657Days before an unpaid invoice is flagged as overdue.
Auto-approve paymentsToggleEnabled / DisabledEnabledAutomatically complete SMS-matched transactions.

Troubleshooting

The Payment Expiry duration is likely set too low. Increase it to at least 15 or 30 minutes and click Save Settings. Manual wallet customers in particular need time to open their banking app, execute the transfer, and return to the checkout to submit their Transaction ID.
The external rates API fetch relies on the server’s cron job scheduler. Check that your scheduler is running (for Laravel-based installations this is typically php artisan schedule:run executed every minute). If the rates API endpoint is blocked by a server firewall, switch to Manual rates as a temporary fix while you resolve the network access issue.
Historical transactions are stored in the currency that was active when they were created. After a currency change, old records retain their original denomination while new records use the updated currency. To get consistent multi-period totals, filter your reports by date ranges that fall entirely within one currency period.

Build docs developers (and LLMs) love