Skip to main content
Payment method settings in Doss are per-currency. Each currency can have its own gateway credentials, active transaction types (deposit, withdrawal), and optional processing time. Settings are stored in the currency_payment_methods table via the CurrencyPaymentMethod model. Payment method configuration is accessed from the currency settings page. The URL pattern is:
/admin/settings/payment-methods/{method}/{currency_id}
Where {method} is the lowercase payment method name, for example:
/admin/settings/payment-methods/stripe/1
/admin/settings/payment-methods/bank/1
/admin/settings/payment-methods/coinpayments/1
Required permission: edit_currency
Payment method settings are not available for currencies with type = crypto_asset. Attempting to open the settings page for a crypto asset currency redirects back with an error.

Available payment methods

Doss supports the following payment methods out of the box:
MethodTypeUse case
BankFiatManual bank transfer deposits and withdrawals
StripeFiatCard payments via Stripe
PayPalFiatPayPal deposits
PayUmoneyFiatPayUmoney deposits
CoinPaymentsCryptoCryptocurrency deposits via CoinPayments
PayeerFiat/CryptoPayeer payment processing
Mobile MoneyFiatMobile money deposits

Configuring gateway credentials

1

Open the payment method settings

Navigate to /admin/settings/payment-methods/{method}/{currency_id}.
2

Set activated transaction types

Select which transaction types the method is active for: deposit, withdrawal, or both.
3

Enter gateway credentials

For Stripe, PayPal, PayUmoney, CoinPayments, and Payeer, enter the API keys and secrets required by the provider. These are stored as JSON in the method_data column.
4

Set processing time (optional)

Enter the expected processing time shown to users on the front-end.
5

Save

POST to /admin/settings/payment-methods/update-paymentMethod-Credentials. The system upserts a CurrencyPaymentMethod record keyed on (method_id, currency_id).
The activated_for column stores a JSON object mapping transaction type names to their enabled state (for example {"deposit": "", "withdrawal": ""}). This is built from the submitted transaction_type checkboxes via the currencyTransactionTypes() helper.

Bank payment method

The bank payment method supports multiple bank accounts per currency. Each bank account is an independent record in the banks table, linked to a CurrencyPaymentMethod record via a JSON method_data field containing {"bank_id": N}.

Adding a bank

1

Open the bank payment method settings

Navigate to /admin/settings/payment-methods/bank/{currency_id}.
2

Fill in the bank details

Required fields:
  • Account name
  • Account number
  • SWIFT code
  • Bank name
  • Branch name, city, and address
  • Country
You can optionally upload a bank logo (JPG, PNG, or GIF, resized to 120×80 px with a 70×70 thumbnail).
3

Set as default (optional)

Mark one bank per currency as the default. When a new default is set, any previous default for that currency is automatically cleared.
4

Submit

POST to /admin/settings/payment-methods/add-bank. The bank record and its linked CurrencyPaymentMethod record are created in a single request.

Updating and deleting banks

  • Update — POST to /admin/settings/payment-methods/update-bank with the bank ID and updated fields.
  • Delete — POST to /admin/settings/payment-methods/delete-bank. Banks with existing transactions cannot be deleted.
  • Delete logo — POST to /admin/settings/payment-methods/delete-bank-logo to remove only the logo file.

Stripe integration

Stripe handles card payment deposits. Enter your Stripe credentials on the payment method settings page for each fiat currency you want to accept cards for. Required fields in method_data:
  • Stripe publishable key
  • Stripe secret key
See Stripe integration for full setup instructions.

CoinPayments integration (crypto)

CoinPayments handles cryptocurrency deposits. Configure it on each crypto currency’s payment method settings page. Required fields in method_data:
  • CoinPayments public key
  • CoinPayments private key
  • Merchant ID
  • IPN secret
See CoinPayments integration for full setup instructions.

AJAX helpers

Two AJAX endpoints power the dynamic payment method UI:
EndpointPurpose
POST /admin/settings/get-payment-methods-detailsFetch existing CurrencyPaymentMethod record for a method + currency
POST /admin/settings/get-payment-methods-specific-currency-detailsFetch currency details along with method data, including bank or mobile money lists
POST /admin/settings/payment-methods/getCpmIdResolve a bank ID to its CurrencyPaymentMethod ID and full bank record
POST /admin/settings/payment-methods/show-bank-detailsShow bank details for a specific CurrencyPaymentMethod
All endpoints return JSON with a status field (200 on success, 401 if not found).

Build docs developers (and LLMs) love