# Alternative to webhooks

If you're not using webhooks, you'll need to use [GET /token-requests/{tokenRequestId}/result](../../api/reference/Requests-for-Payments-v1-or-AIS#operation/GatewayService.GetTokenRequestResultWithStatus) to obtain the `transferId` in order to call the [GET /transfers/{transferId}](../../api/reference/Transfers-for-Payments-v1#operation/GatewayService.GetTransfer).

1. **TPP -> Token.io** - On receiving the callback from Token.io the TPP first checks the token request status using the [GET /token-requests/{tokenRequestId}/result](../../api/reference/Requests-for-Payments-v1-or-AIS#operation/GatewayService.GetTokenRequestResultWithStatus) call.
2. **Token.io -> TPP** - Token.io responds to the [GET /token-requests/{tokenRequestId}/result](../../api/reference/Requests-for-Payments-v1-or-AIS#operation/GatewayService.GetTokenRequestResultWithStatus) call. If the token-request status is `PROCESSED`, the response should contain the `transferId`. The TPP will keep calling the [GET /token-requests/{tokenRequestId}/result](../../api/reference/Requests-for-Payments-v1-or-AIS#operation/GatewayService.GetTokenRequestResultWithStatus) endpoint until the `status` has moved from `PENDING` to `PROCESSED` and the `transferId` has been received.
A `REJECTED` token-request status means that the request has been rejected by either Token.io or the bank, and the user was not asked to authorize the payment.
3. **TPP -> Token.io** - Once the response to the [GET /token-requests/{tokenRequestId}/result](../../api/reference/Requests-for-Payments-v1-or-AIS#operation/GatewayService.GetTokenRequestResultWithStatus) call contains the `transferId`, the TPP uses the [GET /transfers/{transferId}](../../api/reference/Transfers-for-Payments-v1#operation/GatewayService.GetTransfer) request.
4. **Token.io -> TPP** - Token.io confirms the payment status in the [GET /transfers/{transferId}](../../api/reference/Transfers-for-Payments-v1#operation/GatewayService.GetTransfer) response.


If the status is non-final, *e.g.*, `PROCESSING`, the TPP should use a polling call ([GET /transfers/{transferId}](../../api/reference/Transfers-for-Payments-v1#operation/GatewayService.GetTransfer)) every 15 mins.

Refer to the [Token.io API Reference](../../api/reference) for additional details.

If you have any feedback about the developer documentation, please contact [devdocs@token.io](mailto:devdocs@token.io)