I know we can defer a action in EOS, I invoke a non-abi action from an abi action like this:

eosio::transaction txn{};
    eosio::permission_level(owner, N(active)),
txn.delay_sec = delay;
txn.send(N(id), owner);

Is the above transaction correct? I tried but it didn't work. But, do we have some workaround to run this?

  • if it's not in the abi, then you can't communicate with it
    – confused00
    Commented Aug 31, 2018 at 19:05

2 Answers 2


It isn't possible to call a non-ABI action in the way you want. Only something in the ABI can be called in a transaction, whether it is deferred or not.


The reason you couldn't execute non-abi action is that auto-generated action dispatcher doesn't contain action not marked with [[eosio::action]]. Write apply manually or use EOSIO_DISPATCH to dispatch your action correctly.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.