curl -X POST https://businessapi-staging-civ.djigui.io/api/v1.0/quote/6c1d8f0e-3b7a-4f5e-9a51-2d0c7e8b4a12/pay \
-H "x-api-key: $DJIGUI_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phoneNumber": "07 57 46 84 58" }'
{
"id": "b4e8a2c6-7d1f-4a3b-9e5c-8f0a1b2c3d4e",
"quoteId": "6c1d8f0e-3b7a-4f5e-9a51-2d0c7e8b4a12",
"status": "pending",
"amount": 98450,
"fees": 1477,
"chargedAmount": 99927,
"paymentUrl": "https://pay.wave.com/c/cos-1a2b3c4d5e6f",
"failureReason": null,
"created": "2026-10-20T09:18:12.330Z",
"completed": null
}
{
"code": "payment_in_progress",
"message": "A payment for this quote is already waiting for the payer.",
"paymentId": "b4e8a2c6-7d1f-4a3b-9e5c-8f0a1b2c3d4e",
"paymentUrl": "https://pay.wave.com/c/cos-1a2b3c4d5e6f"
}
Quotes
Pay a quote
Open a Wave payment for a quote.
POST
/
quote
/
{id}
/
pay
curl -X POST https://businessapi-staging-civ.djigui.io/api/v1.0/quote/6c1d8f0e-3b7a-4f5e-9a51-2d0c7e8b4a12/pay \
-H "x-api-key: $DJIGUI_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phoneNumber": "07 57 46 84 58" }'
{
"id": "b4e8a2c6-7d1f-4a3b-9e5c-8f0a1b2c3d4e",
"quoteId": "6c1d8f0e-3b7a-4f5e-9a51-2d0c7e8b4a12",
"status": "pending",
"amount": 98450,
"fees": 1477,
"chargedAmount": 99927,
"paymentUrl": "https://pay.wave.com/c/cos-1a2b3c4d5e6f",
"failureReason": null,
"created": "2026-10-20T09:18:12.330Z",
"completed": null
}
{
"code": "payment_in_progress",
"message": "A payment for this quote is already waiting for the payer.",
"paymentId": "b4e8a2c6-7d1f-4a3b-9e5c-8f0a1b2c3d4e",
"paymentUrl": "https://pay.wave.com/c/cos-1a2b3c4d5e6f"
}
In production, this opens a real Wave payment.
paymentUrl to the payer: they confirm in Wave, and only phoneNumber can pay. They have 30 minutes.
Then follow the quote with GET /quote/{id}/status. See the Payments guide.
The quote must start today or later. Calling this again while a payment waits does not open a second one: it answers 409 payment_in_progress with the waiting payment’s paymentUrl.
string
required
The quote’s id.
Body
string
required
The Wave number that will pay: an Ivorian mobile, 10 digits starting with
01, 05 or 07, with or without +225, spaces allowed. It can differ from the policyholder’s.Response
201 Created, with the payment.
string
string
string
pending until the payer confirms, then succeeded or failed.integer
The quote’s premium, francs CFA.
integer
Wave’s fee, added on top.
integer
What the payer is asked for:
amount + fees.string | null
Where the payer confirms with Wave. Set only while the payment is
pending.string | null
string
ISO 8601 timestamp.
string | null
When it succeeded or failed.
Errors
| Status | code | |
|---|---|---|
| 400 | invalid_request | phoneNumber is not an Ivorian mobile number. |
| 404 | quote_not_found | No quote with this id in your company. |
| 409 | payment_in_progress | A payment is already waiting. paymentId and paymentUrl are that payment’s. |
| 409 | quote_already_paid | The quote already has a contract. |
| 422 | quote_start_date_passed | The quote’s start date has passed: create a new quote. |
| 422 | quote_incomplete | The quote has no policyholder phone: create a new quote. |
| 502 | payment_provider_unavailable | Wave could not open the payment. Recorded as failed: retry later. |
| 503 | payment_unavailable | Payments are unavailable for now. Retry later. |
curl -X POST https://businessapi-staging-civ.djigui.io/api/v1.0/quote/6c1d8f0e-3b7a-4f5e-9a51-2d0c7e8b4a12/pay \
-H "x-api-key: $DJIGUI_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phoneNumber": "07 57 46 84 58" }'
{
"id": "b4e8a2c6-7d1f-4a3b-9e5c-8f0a1b2c3d4e",
"quoteId": "6c1d8f0e-3b7a-4f5e-9a51-2d0c7e8b4a12",
"status": "pending",
"amount": 98450,
"fees": 1477,
"chargedAmount": 99927,
"paymentUrl": "https://pay.wave.com/c/cos-1a2b3c4d5e6f",
"failureReason": null,
"created": "2026-10-20T09:18:12.330Z",
"completed": null
}
{
"code": "payment_in_progress",
"message": "A payment for this quote is already waiting for the payer.",
"paymentId": "b4e8a2c6-7d1f-4a3b-9e5c-8f0a1b2c3d4e",
"paymentUrl": "https://pay.wave.com/c/cos-1a2b3c4d5e6f"
}