Skip to content

Create a payment (owner or developer)

POST
/dashboard/v1/merchants/{merchantId}/{mode}/payments
curl --request POST \
--url http://localhost:4000/dashboard/v1/merchants/example/test/payments \
--header 'Content-Type: application/json' \
--header 'idempotency-key: example' \
--cookie better-auth.session_token=<better-auth.session_token> \
--data '{ "amount": 15000, "currency": "XOF", "provider": "wave", "description": "example", "client_reference": "example", "customer": { "phone": "+221771234567", "name": "example" }, "success_url": "https://example.com", "cancel_url": "https://example.com", "metadata": { "additionalProperty": "example" } }'
merchantId
required
string
mode
required
string
Allowed values: test live
idempotency-key
required

Required retry-safe key; reuse it only for the same operation and request body

string
>= 1 characters <= 255 characters

Required retry-safe key; reuse it only for the same operation and request body

Media typeapplication/json
object
amount
required

Integer XOF

integer
> 0 <= 100000000
Example
15000
currency
string
default: XOF
Allowed values: XOF
provider

Skip the hosted method picker and start this provider immediately

string
Allowed values: wave orange_money
description
string
<= 200 characters
client_reference

Your order id

string
<= 100 characters
customer
object
phone
string
/^\+2217[0-9]{8}$/
Example
+221771234567
name
string
<= 100 characters
success_url
string format: uri
cancel_url
string format: uri
metadata
object
key
additional properties
string
<= 500 characters

Payment created

Media typeapplication/json
object
id
required
string
object
required
string
Allowed values: payment
livemode
required
boolean
amount
required
integer
currency
required
string
fee
required
integer
net
required
integer
status
required
string
Allowed values: requires_payment_method processing succeeded failed expired refunded
provider
required
string | null
Allowed values: wave orange_money mock
client_reference
required
string | null
description
required
string | null
customer
required
object
phone
required
string | null
name
required
string | null
checkout_url
required

Hosted checkout page — redirect your customer here

string
next_action
required
Any of:
object
type
required
string
Allowed values: redirect
url
required
string
metadata
required
object
key
additional properties
string
failure_reason
required
string | null
provider_transaction_id
required
string | null
expires_at
required
string
succeeded_at
required
string | null
created_at
required
string
Example
{
"id": "pay_3k9x0c1v2b3n4m5l6k7j",
"object": "payment",
"status": "requires_payment_method",
"provider": "wave",
"next_action": {
"type": "redirect"
}
}

Invalid request

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Sign-in required

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Forbidden

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Not found

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}

Idempotency conflict or invalid state

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": "example"
}
}