Transactions

Table of contents

  1. Introduction
  2. Lifecycle
    1. Pending
    2. Accepted
    3. Confirmed
    4. Paying
    5. Paidout
  3. Failed Payments
  4. Incomplete Payments
  5. Example Object

Introduction

A transaction represents a payment on the platform. When a user makes a payment, subscribes to a profile or starts an embedded checkout a new transaction will be created.

Lifecycle

Each transactions life-cycle is as follows:

Pending

The user has initiated the transaction and has been presented with the QR code, but no funds have been confirmed at the address. The platform will continuously monitors the blockchain for payments to the address. When a transaction is detected, it will be set as the txid property.

Accepted

A payment is considered “Accepted” when the transaction at txid has a value equal to or greater than amount. And txid has been confirmed equal to or as many times than acceptAfter.

Note: A transaction is defined as “Accepted” when the property isAccpeted is true. The status property will never be set to Accepted.

This feature was created so that a person making a payment will not have to wait for 6 confirmations (this can be over an hour) for small or low-risk transactions. But an Accepted transaction can not be withdrawn untill the status has been set to Confirmed. Use this with caution, do not consider the Transaction fully paid until it has been confirmed. If the amount is greater than 0.005 then acceptAfter will be set to 6.

Confirmed

The transaction has been confirmed at least 6 times. The value displayed in the app will be applied to your confirmed balance.

Paying

This is when the payout transaction has been created but it has not been signed and broadcast. This is for internal use only, this is only documented for your infomation. You may see a transaction with this status for a few seconds but this status change will not trigger any webhooks.

Paidout

The transaction will be set to Paidout when the value of the transaction has been successfuly withdrawn.

Failed Payments

If the customer fails to fully fund the transaction or in the rare case that there is an internal issue handling a transaction the transaction status will be set to Failed. At the moment a transaction fails the failedAt property will be set to a timestamp and the failureReason property will be set to a human-readable error message.

"status": "Failed"
"failureReason": "Timeout: Zero balance after 6 hours after activation"
"failedAt": "2025-12-18T03:00:00.000Z"

Incomplete Payments

If after 6 hours a balance was confirmed at the address but it was less than the amount requested. The transaction will still be set to Confirmed and the funds will still be credited to your confirmed balance, but the user will not be able to proceed in the checkout/subscription process.

Example Object

{
    "id": "8c153651-df68-4a13-ae38-f66771d22a2c",
    "groupID": "fdab7a99-2c38-444b-bcb3-f7cef61c275b",
    "embedTokenID": null,
    "payoutID": null,
    "systemPayoutID": null,
    "systemID": "latam-south-3",
    "subscriptionID": null,
    "type": "Standard",
    "status": "Failed",
    "currency": "BTC",
    "address": "bc1q0lpdzwxlmcl34jhcvs9xkks6t4fzacpaprwnh5",
    "amount": "0.000582",
    "email": "",
    "data": "",
    "ref": "",
    "balance": "0.00000000",
    "txid": null,
    "confirmations": 0,
    "acceptAfter": 1,
    "payoutTX": null,
    "estPayoutValue": null,
    "failureReason": "Timeout: Zero balance after 6 hours after activation",
    "isAccepted": false,
    "isIncomplete": false,
    "activatedAt": "2025-12-17T20:58:17.000Z",
    "notifiedAt": null,
    "paidAt": null,
    "detactedAt": null,
    "failedAt": "2025-12-18T03:00:00.000Z",
    "payoutCompletedAt": null,
    "collectedAt": null,
    "createdAt": "2025-12-01 18:00:00",
    "updatedAt": "2025-12-01 18:00:00",
    "deletedAt": null
}

No AI was used in the creation of this documentation.