Create a mobile top-up order
const url = 'https://api-omni.linra.net/api/v1/orders/topup';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"partnerId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","partnerGlobalId":"example","geoScopeGlobalId":"example","externalReference":"example","amount":1,"phoneNumber":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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" }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Your own idempotency key — a retried create with the same value returns the original order, never a duplicate.
Examplegenerated
{ "partnerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "partnerGlobalId": "example", "geoScopeGlobalId": "example", "externalReference": "example", "amount": 1, "phoneNumber": "example"}Responses
Section titled “Responses”Order accepted (the saga runs synchronously; the response reflects its outcome).
object
object
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
The database ID — use this for GET /api/v1/orders/topup/{orderId}.
Example
{ "state": "SUCCESS", "payload": { "status": "Completed" }}Request validation failed.
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Example
{ "state": "NOT_FOUND_ORDER", "payload": null}A duplicate/in-progress/intervention-required prior attempt with the same externalReference (see the Idempotency guide).
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Example
{ "state": "NOT_FOUND_ORDER", "payload": null}A business rule rejected the request (HTTP 422).
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Example
{ "state": "NOT_FOUND_ORDER", "payload": null}Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Example
{ "state": "NOT_FOUND_ORDER", "payload": null}Headers
Section titled “Headers”Seconds to wait before retrying.