# Getting Paid

The payments for Tellor feeds are not held in the main tellor contract. Technically you can pay for Tellor feeds however you want (e.g. off-chain, recurring, hand shake agreements, etc.), but the trustless way to do this on-chain is to use the [Autopay contract.](https://github.com/tellor-io/autoPay)

The autopay contract allows parties to schedule and fund recurring data feeds or submit one-time tips to Tellor queryID's.&#x20;

{% hint style="info" %}
[For information on how to fund a queryID once or as a feed.](/tellor-docs-v2/getting-data/funding-a-feed.md)
{% endhint %}

There is a 12 hour waiting period after reporting data before tips can be claimed. This helps ensure that, if a value gets disputed, another reporter will be incentivized to submit the data and the user can still retrieve their requested data. Also note that tips must be claimed within 3 months of the original data submission.

### One time tips

**Finding** - Autopay contracts will emit an event:

```solidity
event TipAdded(bytes32 _queryId, uint256 _amount, bytes _queryData, address _tipper);
```

To see the current tip for any queryId, check:

```solidity
/**
 * @dev Getter function to current oneTime tip by queryId
 * @param _queryId id of reported data
 * @return amount of tip
 */
function getCurrentTip(bytes32 _queryId)
    external
    view
    returns (uint256)
{
```

**Getting Payment** - To get the payment for a one time tip, run:

```solidity
/**
 * @dev Function to claim singular tip
 * @param _queryId id of reported data
 * @param _timestamps ID of timestamps you reported for
 */
function claimOneTimeTip(
    bytes32 _queryId,
    uint256[] calldata _timestamps
) external {
```

Note the timestamp array is so you can submit for many one time tips and just claim all of those tips at once.

### Recurring data feeds

**Finding** - When a new feed is funded, the following event will emit:

```solidity
event DataFeedFunded(bytes32 _queryId, bytes32 _feedId, uint256 _amount, address _feedFunder);
```

To see all data feeds for a given queryID, check:

```solidity
/**
 * @dev Getter function to read current data feeds
 * @param _queryId id of reported data
 * @return feedIds array for queryId
 */
function getCurrentFeeds(bytes32 _queryId)
    external
    view
    returns (bytes32[] memory)
{
```

Getting Payment - to submit for payments from a data feed, run:

```solidity
/**
 * @dev Internal function which allows Tellor reporters to claim their autopay tips
 * @param _feedId of dataFeed
 * @param _queryId id of reported data
 * @param _timestamp timestamp of reported data eligible for reward
 * @return uint256 reward amount
 */
function _claimTip(
    bytes32 _feedId,
    bytes32 _queryId,
    uint256 _timestamp
) 
```

{% hint style="info" %}
The \_feedId is simply the keccak256 hash of the variables defined in setupFeed:

```solidity
    bytes32 _feedId = keccak256(
        abi.encode(_queryId, _reward, _startTime, _interval, _window, _priceThreshold)
    );
```

{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tellor.io/tellor-docs-v2/reporting-data/release-process.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
