# 6 2018-04-29T01:54:17.500 eosio.token::transfer => scott 93e78520... {"from":"exchange","to":"scott","quantity":"1.0000 EOS","mem...
```
By processing the history we can also be informed when our transaction was confirmed. In practice it may be useful to embed an exchange-specify memo
on the withdraw request which you can use to map to your private database state which tracks the withdraw process *or* you could simply use the
transaction ID. When your account history microservice comes across seq 5 and sees it is irreversible it can then mark your withdaw as complete.
### Handling Errors
Sometimes network issues may cause a transaction to fail and never be included in a block. Your internal database will need to know when this has happend
so that it can inform the user and/or try again. If you do not get an immediate error when you submit your local transfer, then you must wait for
the transaction to expire. Every transaction has an "expiration" after which the transaction can never be applied. Once the last irreversible block has
moved past the expiration time you can safely mark your attempted withdaw as failed and not worry about it "floating around the ether" to be applied
when you least expect.
By default cleos sets an expiration window of just 2 minutes. This is long enough to allow all 21 producers an opportunity to include the transaction.
```
./cleos transfer exchange scott "1.0000 EOS" -j -d
{
"expiration": "2018-04-29T01:58:12",
"ref_block_num": 37282,
"ref_block_prefix": 351570603,
"max_net_usage_words": 0,
"max_kcpu_usage": 0,
"delay_sec": 0,
"context_free_actions": [],
...
```
Your microservice can query the last irreversible block number and the head block time using cleos.
@@ -1109,7 +1109,7 @@ int main( int argc, char** argv ) {
autogetActions=get->add_subcommand("actions",localized("Retrieve all actions with specific account name referenced in authorization or receiver"),false);
getActions->add_option("account_name",account_name,localized("name of account to query on"))->required();
getActions->add_option("pos",pos_seq,localized("sequence number of action for this account, -1 for last"));
getActions->add_option("offset",offset,localized("get actions [pos,pos+offset) for positive offset or [pos-offset,pos) for negative offset"));
getActions->add_option("offset",offset,localized("get actions [pos,pos+offset] for positive offset or [pos-offset,pos) for negative offset"));
getActions->add_flag("--json,-j",printjson,localized("print full json"));