LanguageAZRUTREN
VALYUTAMOBILE B2B

Partner API documentation

Technical reference for the ValyutaMobile Partner API: endpoints, authentication and response formats.

Base URLhttps://valyutamobile.com/wp-json/valyutamobile/v1

OpenAPI 3.0 JSON

Authentication

Protected requests require a Bearer token and HMAC SHA-256 signature.

  1. Use a vm_test_ token for testing.
  2. Send a unique nonce with each request.
  3. Keep live tokens server-side only.
cURL
TOKEN='vm_test_YOUR_TOKEN'
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
METHOD='GET'
TARGET='/wp-json/valyutamobile/v1/catalog?page=1&per_page=20'
BODY=''
BODY_HASH=$(printf '%s' "$BODY" | openssl dgst -sha256 | awk '{print $2}')
CANONICAL=$(printf '%s\n%s\n%s\n%s' "$TS" "$METHOD" "$TARGET" "$BODY_HASH")
SIGNATURE=$(printf '%s' "$CANONICAL" | openssl dgst -sha256 -hmac "$TOKEN" | awk '{print $2}')

curl "https://valyutamobile.com$TARGET" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-VM-Timestamp: $TS" \
  -H "X-VM-Nonce: $NONCE" \
  -H "X-VM-Signature: $SIGNATURE"

Sandbox

A vm_test_ token runs in the test environment and does not change the live balance.

test_scenarioResult
completedSuccessful test response
processingProcessing test response
failedFailed test response
insufficient_balanceBalance error test

POST /sandbox/reset resets the test balance.

Catalog

GET/catalog?page=1&per_page=100&search=&category=

Read product and category data from the API. Use product id and fields values when creating orders. API v1 supports fixed denominations. Variable-amount top-ups are unavailable through the API; previously synced IDs are rejected before charging.

Respect each field type. If dynamic_options=true, fetch current choices via GET /products/{id} before checkout. For select fields submit options.value, not options.label. Do not accept orders with unavailable fields or empty required lists. Send numbers as strings too; number_format specifies integer or decimal.

HTTP
GET /catalog?page=1&per_page=100
GET /categories
GET /products/{vm_prod_id}

Create order

POST/orders

Send product data and a unique Idempotency-Key with POST /orders.

The example test_scenario is for vm_test_ tokens only; omit it from live orders.

JSON
{
  "external_order_id": "shop-1058-line-1",
  "product_id": "vm_prod_a1b2c3",
  "quantity": 1,
  "fields": {"user_id": "123456", "server_id": "EU"},
  "test_scenario": "completed"
}

Order status

GET/orders/{vm_order_id}

GET /orders/{id} returns the current status and available delivery data.

HTTP
GET /orders/vm_order_8f2d1c

Balance

GET/balance

GET /balance returns the balance for the current token environment.

HTTP
GET /balance
GET /wallet/transactions?page=1&per_page=50

Webhook

order.updated events can be sent as signed webhook requests. Verify the signature and return 2xx.

X-VM-Webhook-Signature

API console

Use only a vm_test_ token when testing requests.

Response will appear here.

Errors & limits

HTTPMeaning
400/422Invalid request or data
401/403Authentication or access error
402Insufficient balance
409Conflict or unavailable resource
429Request limit exceeded
5xxTemporary server error