Skip to Content
One-time paymentsXML protocol

XML protocol v2.9

XML API of the Callisto Mobile Payment platform. All requests are sent as POST with an XML body to a single address; the operation type is determined by the name of the child element inside <Request> — e.g. <CreateInvoiceRequest>.

API addresshttps://pay-sandbox.digitalspb.com
Reference & MCPhttps://i-free.money/developers/en/sandbox
ParameterValue
Content-Typetext/xml
Methodalways POST; the operation type is derived from the name of the <Request> child element

Protocol version: 2.9.0

Required HTTP headers

Callisto-Protocol-Version: 2 SignatureVersion: 3 Content-Type: text/xml

Request structure

Each request is wrapped in the root <Request> element with a mandatory <Header> authentication block. The response comes in a root <Response> with ResultCode and ResultDescription fields.

Request skeleton
<?xml version="1.0" encoding="utf-8"?> <Request> <Header> <Authentication> <Login>demo_login</Login> <NowUtc>20210329200008</NowUtc> <Signature>802c4e0aa711a24888ea571dd8df6608d03e74bfe7cf8be040fb8b9aba8d3a4f</Signature> </Authentication> <RequestAttempt>1</RequestAttempt> </Header> <!-- operation body: <CreateInvoiceRequest>, <GetInvoiceRequest>, … --> </Request>

Signature

The signature is passed in Header/Authentication/Signature. Additionally, an IP address whitelist is applied at the ProjectID level.

Formula
Signature = LOWERCASE(HMACSHA256(Password, Login + LOWERCASE(HMACSHA256(Password, NowUtc))))

In the XML protocol NowUtc uses the yyyyMMddHHmmss format — no separators and no Z, unlike ISO 8601 in the JSON API. A deviation from the system time of more than 20 minutes yields ResultCode=101.

XML signature calculation

LOGIN=demo_login PASSWORD=demo_password NOW=$(date -u +%Y%m%d%H%M%S) INNER=$(printf '%s' "$NOW" \ | openssl dgst -sha256 -hmac "$PASSWORD" | awk '{print $NF}') SIG=$(printf '%s%s' "$LOGIN" "$INNER" \ | openssl dgst -sha256 -hmac "$PASSWORD" | awk '{print $NF}')

Operation groups

GroupOperationsPurpose
InvoiceManagement5Invoices — create, authorize, get, cancel, refund
CustomerContract3Customer contracts — create, authorize, cancel
CustomerBilling2Billing support check and available payment methods

Outside the groups, the specification describes two more operations — ConfirmPaymentTransaction and SendInvoiceContent. The sandbox does not implement them: a request with either root element gets HTTP 400 and ResultCode 400 with the text Unknown operation element.