Buy Transaction status changed

POST /v1/notification/buy-status

This is not an actual endpoint. SkinsMoney sends you notification with payload shown here. Notification is sent as JSON. You MUST respond to it with HTTP 20X Status Code.

In order to receive these notifications you need to put "IPN URL (buy)" in service settings in SkinsMoney panel.

Signatures are generated by concatenating all received fields (except signature) separating them with the separator | and adding the key available in the Client Panel for the service at the end. Hashing must be done using sha256.

Example PHP Code: https://pastebin.com/N5xsKYNV

Example concatenated signature before hashing (service hash = IfyFjjQWcHYKMWxAF89qtDbgcSOO64i7acjnSoVoNfdAAlUxp6UQMkNHM8JnAEDr2xlxqav51Sspb0QD): 01K6WSWRG9ZW0CXRSKVK0PH1QR|buy_transaction:status_changed|2025-10-06T15:03:08+02:00|2|661512bf-4dd2-4404-a58a-210acf868665|01998a13-a558-7373-bfab-55d0732d5432||123|-13|7874769327|0.160|2025-10-01T21:03:19+02:00|2025-10-06T15:03:03+02:00|IfyFjjQWcHYKMWxAF89qtDbgcSOO64i7acjnSoVoNfdAAlUxp6UQMkNHM8JnAEDr2xlxqav51Sspb0QD

When some fields are set to null, remember to parse them like an empty string during signature calculation. In the example above field "custom" is null, so PHP treats it like an empty string. Make sure your language works similar way or parse it properly before checking signature.

Notifications are sent max 10 times, every failed one has timeout period between 1-10 minutes.

application/json

Body Required

  • requestId string Required

    IPN ID

  • action string Required

    IPN action

  • date string Required

    Current datetime in ISO8601 format

  • attempt integer Required

    IPN send attempt (max 10)

  • data object Required

    IPN object

    Hide data attributes Show data attributes object
    • serviceId string Required

      Service ID

    • buyId string Required

      Buy transaction ID

    • custom string | null

      Custom field (your ID passed during buying)

    • itemId string Required

      Item ID

    • status integer Required

      Transaction status (see Get buy status endpoint)

    • steamOfferId string Required

      Steam offer ID

    • dealPrice string Required

      Deal price

    • createdAt string Required

      Buy transaction created at

    • updatedAt string Required

      Buy transaction updated at

  • signature string Required

    IPN signature (see description)

Responses

  • 200 text/plain
POST /v1/notification/buy-status
curl \
 --request POST 'https://api.skinsmoney.gg/v1/notification/buy-status' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '{"requestId":"01K6WSWRG9ZW0CXRSKVK0PH1QR","action":"buy_transaction:status_changed","date":"2025-10-06T15:03:08+02:00","attempt":"2","data":{"serviceId":"661512bf-4dd2-4404-a58a-210acf868665","buyId":"01998a13-a558-7373-bfab-55d0732d5432","custom":"string","itemId":"123","status":"-13","steamOfferId":"7874769327","dealPrice":"0.160","createdAt":"2025-10-01T21:03:19+02:00","updatedAt":"2025-10-06T15:03:03+02:00"},"signature":"2c1dd5c97fda954114229a72ddf7ae08b3225006a35bab382eb3ade868852b21"}'
Request examples
{
  "requestId": "01K6WSWRG9ZW0CXRSKVK0PH1QR",
  "action": "buy_transaction:status_changed",
  "date": "2025-10-06T15:03:08+02:00",
  "attempt": "2",
  "data": {
    "serviceId": "661512bf-4dd2-4404-a58a-210acf868665",
    "buyId": "01998a13-a558-7373-bfab-55d0732d5432",
    "custom": "string",
    "itemId": "123",
    "status": "-13",
    "steamOfferId": "7874769327",
    "dealPrice": "0.160",
    "createdAt": "2025-10-01T21:03:19+02:00",
    "updatedAt": "2025-10-06T15:03:03+02:00"
  },
  "signature": "2c1dd5c97fda954114229a72ddf7ae08b3225006a35bab382eb3ade868852b21"
}
Response examples (200)
OK