Skip to main content
Use sandbox first for all integration validation before moving to production.

Sandbox Setup

1

Use sandbox base URL

API base URL: https://sandbox-api.payfonte.com
2

Use sandbox credentials

Get your client-id and client-secret from Settings -> API Keys/Webhooks in sandbox-app.payfonte.com.
3

Set webhook endpoint

Configure a test callback URL so you can validate async transaction updates.

What To Validate Before Go-Live

Auth and Headers

Confirm all requests include client-id and client-secret.

Amount Format

Confirm you send integer minor-unit values only. Decimals are not supported.

Status Lifecycle

Validate pending/processing to final states (success or failed) in your business flow.

Webhook Handling

Verify signature validation, retries, idempotency, and response timing.

Core Test Scenarios

ScenarioExpected Result
Valid charge request201 response with transaction reference
Invalid credentialsAuthentication failure (401/403)
Decimal amount sentValidation/provider failure
Duplicate reference409 with DuplicateTransactionReference
Invalid provider slugError with InvalidProvider
Webhook deliveryCallback received and processed once (idempotent)

Simulate Success, Failed, and Pending Outcomes

For both collections and disbursements in sandbox, you can control the expected transaction outcome by changing the mobile money phone number used in the request.
Phone Number PatternExpected ResultHow To Use It
Any other phone numbersuccessSandbox treats all other phone numbers as successful transactions
Number ending in 000000failedSandbox forces the transaction to fail
Number ending in 111111pendingSandbox keeps the transaction pending so you can test async handling
Apply this rule to the phone number field you send for the transaction. For collections, use the customer’s mobile money number. For disbursements, use the recipient phone number.
When testing pending flows, do not treat the initial API response as final. Wait for webhook updates or verify the transaction status from your backend before marking the transaction as success or failed.

Provider-Specific Test Data

Orange Ivory Coast OTP simulator

For Orange Ivory Coast testing on Payfonte:
  1. Open https://mpayment.orange-money.com/mpayment-otp/login
  2. Sign in with:
    • Username: 7701901040
    • Password: MerchantWP01040
  3. Generate OTP with:
    • Phone Number: 7701101040 (usually pre-loaded)
    • PIN: 1791
  4. Use the generated OTP on the payment platform.
  • Success example: 254700123456
  • Failed example: 254700000000
  • Pending example: 254711111111
  • Success example: 233242426222
  • Failed example: 233240000000
  • Pending example: 233241111111

Quick Sandbox Request

curl --location 'https://sandbox-api.payfonte.com/payments/v1/checkouts' \
  --header 'client-id: <your-client-id>' \
  --header 'client-secret: <your-client-secret>' \
  --header 'Content-Type: application/json' \
  --data '{
    "reference": "test-001",
    "amount": 10000,
    "currency": "NGN",
    "country": "NG",
    "user": {
      "phoneNumber": "08012345678"
    }
  }'

Environments

Sandbox and production URLs and credential setup.

Webhooks

Verify callback payloads and signature handling.

Error Codes

Troubleshoot failed test requests quickly.