Skip to main content

How the sandbox works

A sandbox key uses the same base URL, routes, envelope, statuses and polling as production. The differences:
  • No biller is contacted and no money moves.
  • The outcome is chosen by the account identifier you send (tables below). Any other identifier returns one bill of 500.00 DZD and a successful payment.
  • Discovery completes in about 0.2 s and payment in about 0.5 s, so your poller still has to handle PENDING and PROCESSING.
  • GET /v3/bills/partners reports every biller ACTIVE.
  • Receipts are PNG images.
  • Sandbox and production transactions are fully separate. A sandbox key never sees a production transaction, and vice versa.
Confirm which environment a key belongs to with Validate Access Token.

Test accounts

ADE

account: { "electronic_payment_key": "<value>" }

SONELGAZ

account: { "sonelgaz": { "invoice_number": "<value>", "amount_without_stamp": "1200.00", "ebb_key": "123456" } } — the outcome depends on invoice_number; the other two fields only need to be present.

SEAAL

account: { "seaal": { "code_client": "<value>", "code_contrat": "446563" } } — the outcome depends on code_client; code_contrat only needs to be 2 to 10 digits.

AADL

account: { "aadl": { "codeloc": "<value>" } } The AADL notice endpoint (/avis) is not available in the sandbox.

SEOR

account: { "seor": { "contrat": "100001", "facture": "<value>" } } — the outcome depends on facture; contrat only needs to be 1 to 6 digits.

Algérie Télécom

account: { "phone_number": "<value>" }

Errors you can trigger

A complete sandbox run

Before going live

  • Your poller handles every status, including UNKNOWN (SONELGAZ 6006006006).
  • A FAILED or REFUNDED payment does not leave a charge on your customer.
  • A 409, 403 or timeout never triggers a second pay.
  • Every pay uses a new ref.
  • Multi-bill orders show selectedBills correctly (SEAAL 100001).
  • Receipts are stored with operationId.
  • The production key is loaded from configuration, never from code.