Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.privy.io/llms.txt

Use this file to discover all available pages before exploring further.

All Tron policy rules use signTransactionBytes as the method. This is an internal method name used for policy evaluation — there is no separate signTransactionBytes API endpoint. It maps to raw_sign calls on Tron wallets. A DENY rule blocks raw_sign; an ALLOW-only rule gates it by your conditions.
The decision to use a TransferContract or a TriggerSmartContract on Tron depends on the asset you are moving and whether you are interacting with a smart contract. Use a TransferContract when you are performing a simple, direct transfer of native TRX between two standard accounts. Use a TriggerSmartContract when you are interacting with any smart contract, which is necessary for transferring TRC-20 tokens and calling any function on a smart contract.

Allowlist a specific TransferContract to_address

{
    "version": "1.0",
    "name": "TransferContract to_address",
    "chain_type": "tron",
    "rules": [
        {
            "name": "Allow specific TransferContract to_address",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TransferContract.to_address",
                    "operator": "eq",
                    "value": "TBia4uHnb3oSSZm5isP284cA7Np1v15Vhi"
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Configure a max TransferContract amount (TRX)

{
    "version": "1.0",
    "name": "TransferContract amount",
    "chain_type": "tron",
    "rules": [
        {
            "name": "TransferContract amount maximum",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TransferContract.amount",
                    "operator": "lt",
                    "value": "10000000"
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Configure a max TriggerSmartContract call_value (TRX)

{
    "version": "1.0",
    "name": "TriggerSmartContract contract address",
    "chain_type": "tron",
    "rules": [
        {
            "name": "TriggerSmartContract call_value",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TriggerSmartContract.call_value",
                    "operator": "lt",
                    "value": "10000000"
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Disallow a certain TriggerSmartContract token_id (TRC-10)

{
    "version": "1.0",
    "name": "TriggerSmartContract token id",
    "chain_type": "tron",
    "rules": [
        {
            "name": "TriggerSmartContract token_id",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TriggerSmartContract.token_id",
                    "operator": "eq",
                    "value": "1000100"
                }
            ],
            "action": "DENY"
        }
    ]
}

Configure a max TriggerSmartContract call_token_value (TRC-10)

{
    "version": "1.0",
    "name": "TriggerSmartContract call_token_value",
    "chain_type": "tron",
    "rules": [
        {
            "name": "TriggerSmartContract call_token_value",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TriggerSmartContract.call_token_value",
                    "operator": "lt",
                    "value": "10000000"
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Allow a certain owner address to transfer TRC20 token

{
    "version": "1.0",
    "name": "TriggerSmartContract with ABI",
    "chain_type": "tron",
    "rules": [
        {
            "name": "TriggerSmartContract transferFrom._from",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_trigger_smart_contract_data",
                    "field": "transferFrom._from",
                    "operator": "eq",
                    "value": "THscQ8SwfcD7tdts9cnMxTnH2hwvpX3ujy",
                    "abi": [
                        {
                            "type": "function",
                            "name": "transferFrom",
                            "inputs": [
                                {
                                    "name": "_from",
                                    "type": "address"
                                },
                                {
                                    "name": "_to",
                                    "type": "address"
                                },
                                {
                                    "name": "_value",
                                    "type": "uint256"
                                }
                            ],
                            "outputs": [
                                {
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable"
                        }
                    ]
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Only allow transactions after a certain start date

{
    "version": "1.0",
    "name": "Only allow transactions after a certain start date",
    "chain_type": "tron",
    "rules": [
        {
            "name": "Only allow transactions after a certain start date",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "system",
                    "field": "current_unix_timestamp",
                    "operator": "gt",
                    "value": "1757304000"  // 2025-09-08 00:00:00 UTC in seconds since epoch
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Allow transfers to a specific address after a certain timestamp

This is an example of mixing TransferContract and System configurations.
{
    "version": "1.0",
    "name": "Allow specific address after a certain timestamp",
    "chain_type": "tron",
    "rules": [
        {
            "name": "Allow specific address after a certain timestamp",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TransferContract.to_address",
                    "operator": "eq",
                    "value": "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs",
                },
                {
                    "field_source": "system",
                    "field": "current_unix_timestamp",
                    "operator": "gt",
                    "value": "1757304000", // 2025-09-08 00:00:00 UTC in seconds since epoch
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Allow transfers to a specific address with a specific contract address

This is an example of mixing TriggerSmartContract and ABI configurations.
{
    "version": "1.0",
    "name": "Allow a specific address with a specific contract",
    "chain_type": "tron",
    "rules": [
        {
            "name": "Allow a specific address with a specific contract",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TriggerSmartContract.contract_address",
                    "operator": "eq",
                    "value": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
                },
                {
                    "field_source": "tron_trigger_smart_contract_data",
                    "field": "transfer.to",
                    "operator": "eq",
                    "value": "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs",
                    "abi": [
                        {
                            "name": "transfer",
                            "type": "function",
                            "inputs": [{"name": "to", "type": "address"}],
                        },
                    ],
                }
            ],
            "action": "ALLOW"
        }
    ]
}

Allow transfers to a specific address with ABI after a certain timestamp

This is an example of mixing TriggerSmartContract with ABI and System configurations.
{
    "version": "1.0",
    "name": "Allow specific address with ABI after a timestamp",
    "chain_type": "tron",
    "rules": [
        {
            "name": "Allow specific address with ABI after a timestamp",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_trigger_smart_contract_data",
                    "field": "transfer.to",
                    "operator": "eq",
                    "value": "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs",
                    "abi": [
                        {
                            "name": "transfer",
                            "type": "function",
                            "inputs": [{"name": "to", "type": "address"}],
                        },
                    ],
                },
                {
                    "field_source": "system",
                    "field": "current_unix_timestamp",
                    "operator": "gt",
                    "value": "1757304000", // 2025-09-08 00:00:00 UTC in seconds since epoch
                },
            ],
            "action": "ALLOW"
        }
    ]
}

Denylist recipients of a TransferContract with condition sets

{
    "version": "1.0",
    "name": "Denylist TransferContract to_address",
    "chain_type": "tron",
    "rules": [
        {
            "name": "Denylist TransferContract to_address",
            "method": "signTransactionBytes",
            "conditions": [
                {
                    "field_source": "tron_transaction",
                    "field": "TransferContract.to_address",
                    "operator": "in_condition_set",
                    "value": "a2p4etpcbj2dltbjfigybi8j"
                }
            ],
            "action": "DENY", // Note: setting the action to 'ALLOW' makes this an allowlist
        }
    ]
}