Skip to content

Create a mobile top-up order

POST
/api/v1/orders/topup
curl --request POST \
--url https://api-omni.linra.net/api/v1/orders/topup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "partnerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "partnerGlobalId": "example", "geoScopeGlobalId": "example", "externalReference": "example", "amount": 1, "phoneNumber": "example" }'
Media typeapplication/json
object
partnerId
required
string format: uuid
partnerGlobalId
required
string
geoScopeGlobalId
required
string
externalReference
required

Your own idempotency key — a retried create with the same value returns the original order, never a duplicate.

string
amount
required
number format: decimal
phoneNumber
required
string
Examplegenerated
{
"partnerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"partnerGlobalId": "example",
"geoScopeGlobalId": "example",
"externalReference": "example",
"amount": 1,
"phoneNumber": "example"
}

Order accepted (the saga runs synchronously; the response reflects its outcome).

Media typeapplication/json
object
state
required
string
payload
required
details
object
payload
required

The saga’s own outcome envelope, distinct from the persisted TopupOrderResponse below. Internal margin fields (commission/wholesaleAmount) that also exist on this response are deliberately NOT documented here — treat them as reserved/unsupported if you encounter them.

object
orderId

The database ID — use this for GET /api/v1/orders/topup/{orderId}.

string format: uuid
sagaId
string
orderGlobalId
string
nullable
orderStatus
string
nullable
status
string
message
string
nullable
amount
number format: decimal
Example
{
"state": "SUCCESS",
"payload": {
"status": "Completed"
}
}

Request validation failed.

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

A duplicate/in-progress/intervention-required prior attempt with the same externalReference (see the Idempotency guide).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

A business rule rejected the request (HTTP 422).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}
Retry-After
integer

Seconds to wait before retrying.