sk_test_ keys, on the same endpoints as production.
The environment is inherited, never chosen
This is the first symptom to recognise: a401 on a vendor you have just created almost
always means you changed keys between the two calls.
1. Activate Connect on your test account
Activation happens in your dashboard, under Connect, with your test account. Then check that your integration really reads the mode:2. Create test vendors
Nothing distinguishes the creation of a test vendor: same fields, same requiredIdempotency-Key.
3. Verification is not instant in test
What you can verify without approval:- link generation and expiry (
expires_at); - the fact that regenerating the link resumes the session instead of opening a second one;
- the
422refusals oncountryandkycLevel; - that funds do accumulate while no withdrawal is possible.
4. Test collection and the cascade
The split is computed at capture. Use the usual test numbers to drive the payment outcome. See Test your integration.1
Create the intent with the Connect fields
2
Confirm with a test number that succeeds
The split only happens on a successful capture.
3
Read the vendor's balances back
pending_balance, and balance at zero.Exercising the commission refusals
The
too_low refusal does not depend on the amount: a rate under the floor fails at
100 XAF just as it does at 1,000,000. There is no point looking for an amount that triggers it.5. The availability delay
In the meantime, you can verify:- that
next_maturity_atcarries the expected date; - that
available_atis set andmatured_atis null on the transaction; - that a withdrawal against a still-pending balance really returns
422 E_CONNECT_VENDOR_EMPTY_BALANCE, and not a generic error.
6. Test deferred mode without waiting
Deferred mode can be exercised without a real collection: all you need is a balance on your own merchant wallet. It is the fastest way to verify:- the 1% surcharge and the meaning of
amountin the response; - a partial then a full reversal, and the
reversed_totalrunning sum; - the
422 connect.reversal_exceeds_remainingwhen you exceed the remainder; - the
402on reversal when the vendor cannot return the funds.
7. Test idempotency for real
What cannot be tested
Going to production
1
Activate Connect with your live key
Activation is per account and per environment: activating in test does not activate in
production.
2
Recreate your vendors
A test vendor does not exist in production. No migration is possible, and their
verification has to be done again.
3
Rewire your webhooks
Check that you subscribe to the bare names (
connect.transfer.created), and that your
routing does not assume accountId is your own account.4
Check how you handle the 402
It is the refusal you will probably never see in test, and the one that costs the most in
production. Subscribe to
connect.refund.blocked_insufficient_funds.