Skip to main content
Before you launch a payment, your backend must know three things:
  • the active country;
  • the payment service to use;
  • the provider’s operational status.
Countries are identified with ISO alpha-3 codes. Use CMR, not CM.
Service codes used in transaction payloads follow the provider_country_code format, for example mtn_cmr or orange_cmr.

Verify a mobile number

Before sending a phone wallet in a collection or disbursement, you can verify the number through the public gateway:
This route uses your SoleasPay merchant API key and returns the detected country, the number type, the mobile operator when available, and provider_wallet, meaning the national number without the international calling code expected by providers.
Accepted formats for a Cameroonian number:
Always send country for numbers without an international + or 00 prefix. Mysoleas keeps countries in alpha-3 (CMR, CIV, SEN, and so on). Alpha-2 can appear in the response to help interoperability, but it does not replace the alpha-3 code.
See the full reference: Verify a phone number.

List countries

A usable country must have active: true.

Primary operating country

The primary operating country is carried by the TenantCountry.isPrimary relation. It is used as the default context to route payments and calculate fees when no reliable explicit country is provided.
To change it, use the TenantCountry relation identifier, not only the country code.
The change is applied transactionally on the User Service side: the previous primary country is disabled and the new one becomes the tenant’s only primary country. If no primary country is configured on an older account, payment flows keep the historical fallback.

List services

A payment service returns the capabilities your integration needs.

List fees

The gateway returns fees for the requested country only if your token grants access to that country. Otherwise, the API returns 403 access_denied. You can filter by service_code, or separate the direction with incoming_service_code and outgoing_service_code. Add operation and user_tier to get fees for a precise case.

Get a fee quote

Before initializing a transaction, your backend can request the fee amount calculated server-side.
For a direct API application, feeBearer comes from application configuration. For a plugin, send feeBearer in the payload or query string; the payload has priority.
Transactions then store an immutable snapshot in metadata.fees with the amount, currency, fee bearer, source, country, tier, and calculation version.

List providers

Read provider status in is_active.

Choose correctly

For a collection:
  1. Verify that the country is active.
  2. Filter services by country and currency.
  3. Keep services with is_active: true and is_can_collect: true.
  4. If is_need_otp is true, ask the customer for the OTP before execute.
  5. Send service.code in the provider field.
For a disbursement:
  1. Verify that the country is active.
  2. Filter services by country and currency.
  3. Keep services with is_active: true and is_can_disburse: true.
  4. Check your balance before launching high volumes.
  5. Send service.code in the provider field.

Inactive provider

If is_active is false, hide the payment method from your checkout. If a provider becomes unavailable after the customer selected it, show a clear message and suggest another active service from the same country.