Transactions
Table of contents
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
}