Skip to Content
eTulip Docs

Collections

Create a collection and check its status.

POST /v1/collections accepts one request format for all operators enabled on your account. Amounts are integer XOF units: 1000 means 1,000 XOF.

ETULIP / API

One route for every enabled operator

The route stays the same. Your request specifies an operator enabled on your account.

Illustration
Your application
POST /v1/collections
Enabled operatorBased on your account
202 · pendingRequest recorded
Webhook or status check
succeeded / failed
Same endpointPOST /v1/collections
{ "operator": "moov_tg", "amount_minor": 1000, "currency": "XOF" }
POST /v1/collections
Authorization: Bearer et_live_YOUR_KEY
Idempotency-Key: order-12345
Content-Type: application/json

{"operator":"moov_tg","msisdn":"22890000000","amount_minor":1000,"currency":"XOF","firstname":"Ada","lastname":"Doe"}

Operators: mtn_bj, moov_bj, moov_tg, togocel_tg. Use a new idempotency key for each intended transaction; repeat the same key only to retry the exact same request. A different body with the same key returns 409.

The response is 202 and includes a transaction ID and pending status. A partner acknowledgement does not mean success. Call GET /v1/transactions/{id}/status to refresh a pending transaction from Qosic. Only the owning merchant can read it. This endpoint is rate limited.

Final states are succeeded and failed. On success, the configured collection fee is deducted and the net amount credits the operator balance once. The transaction response includes fee_bps, fee_minor, net_minor, balance_before_minor, and balance_after_minor.