Transactions and Payments
A transaction is an abstraction that we inherited from Stellar that represents a command(or operation) to modify the state of the blockchain. Transactions are used to create accounts, send payments, emit assets, authorize actions in another account, and everything related to the account and financial data in the blockchain.
Transactions are made up of a list of operations. Each operation is an individual command that mutates the ledger.
Here are the possible operation types:
Transaction Type | Description |
---|---|
create_account | Internal operation to create a Wallet in the blockchain network |
change_trust | Internal operation to handle trust lines between Wallets in the blockchain network |
payment | Operation to emit, destroy or transfer an amount in a specific asset to a destination account. |
Payments
Any operation over Assets of the platform are done with Payments. A payment has always a single source Wallet, but can have any number of different recipients (up to 100).
Here are the possible payment types:
Payment Type | Description |
---|---|
transfer | A transfer is a peer-to-peer(P2P) transaction between two users from the the system. * Can be a credit of a debit depending on the source wallet. |
deposit | A deposit is a credit that came from a external bank. The source user is always the Bit Capital Issuer. |
withdraw | A withdrawal is a debit that references a user sending money to a external bank. The destination user is always the Bit Capital Issuer. |
boleto | A debit that is a boleto that was paid inside the system. |
service_fee | A service fee is a fee charged from a user based on the billing service. It can be either a credit or a debit depending on the source wallet. |
authorized_card | This is the type of transaction that references a debit from a card transaction approved using external authorizer. |
authorized_card_reversal | This is the type of transaction that references a credit from a card transaction reversal approved using external authorizer. |
transaction_reversal | A transaction reversal is the default payment type for refund operations, everytime a transaction is refunded it'll be created a transaction_reversal with the additionalData referencing the original transaction. |
card | A debit from a card transaction that came from the internal authorizer. |
manual_adjustment | A manual adjustment is a type of operation used by the Bit Capital team internally if it some user for some reason needs a manual adjustment in their balance, can either be a credit of a debit. |
phone_credit | A debit referred to a phone credit recharge. |
Transaction States
Every transaction follows a set of states from it's creating to it's execution of error. It's really important to understand the difference between this states to avoid confusing to the users.
Transaction State | Description |
---|---|
pending | The transaction was created, but the money is not locked yet. |
authorized | The system already locked the amount of money for the transaction and requested to the custody provider, but it did not receive the confirmation of execution yet. |
accepted | The system received the acceptance from the counter-part and it's starting the settlement process. |
executed | The system received the confirmation of the execution of the transaction in the custody provider and registered it on the blockchain. From this point forward this transaction can't be reversed and to refund the user it'll need to be created a transaction_reversal |
notified | The transaction was executed successfully, registered in the blockchain and notified via postbacks to the mediator. |
reversed | The transaction was reversed and the amount returned to the user. If the transaction is in this state it'll not be accounted for in the balance as a debit. |
failed | The transaction failed to be executed for some reason. If the transaction is in this state it'll not be accounted for in the balance as a debit. |
User defined data
When requesting a new transaction, you can add some custom user defined data to it using the extra
property. All data must be JSON and only numbers and strings are accepted values.
Updated about 3 years ago