Skip to content
Test money only. BitMomo currently runs on test networks. Payments use testnet coins and no real money moves. Live keys are not available yet.

Create a payment link

POST
/gateway/payment-links

Required scope: payments:write.

object
allowed_cryptos
Array<string>
description
string
is_active
boolean
name
required
string
>= 1 characters <= 255 characters
note_for_customer
string
preset_amount_ghs

Legacy display value. Use its exact decimal-string counterpart for financial decisions.

number
preset_crypto_type
string
slug
string

Success

object
allowed_cryptos
Array<string>
created_at
required
string
description
string
nullable
id
required
string format: uuid
is_active
required
boolean
last_payment_at
string
nullable
link_payments
integer
link_views
integer
merchant_id
required
string format: uuid
name
required
string
note_for_customer
string
nullable
preset_amount_ghs

Legacy display value. Use its exact decimal-string counterpart for financial decisions.

number
nullable
preset_crypto_type
string
nullable
slug
string
nullable
statistics_scope
string
total_amount_received

Legacy display value. Use its exact decimal-string counterpart for financial decisions.

number
nullable
updated_at
string

Validation error

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time

Invalid key

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time

Scope, merchant or environment denied

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time

Not found

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time

Intent conflict

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time

Rate limited

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time

Internal error

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time

Service unavailable

R15 canonical error envelope. Every 4xx/5xx JSON body carries these five keys, plus x-request-id header; 4xx machine fields (e.g. available_balance) merge in alongside and never shadow them.

object
error
required

Machine code (SCREAMING_SNAKE)

string
Example
VALIDATION_ERROR
message
required

Human-readable detail

string
Example
amount_ghs must be greater than zero
request_id
required

Mirrors the x-request-id response header

string format: uuid
retriable
required

True for 429/502/503/504 only; 400/401/403/404/409 are final

boolean
timestamp
required
string format: date-time