Verify Transfer

You can make a GET request to the VerifyTransferAPI api/v1/transfers/verify/{transferId} endpoint using the transfer ID to check the status of your transfer.


Sample Request to verify transfer:

curl --request GET \
     --url \
     --header 'accept: application/json' \
     --header 'x-anchor-key: <API Key>'
  "data": {
    "id": "169529343584418-anc_trsf",
    "type": "NIP_TRANSFER",
    "attributes": {
      "createdAt": "2023-09-21T10:50:36",
      "reason": "Test Transfer",
      "amount": 1000,
      "currency": "NGN",
      "status": "COMPLETED"
    "relationships": {
      "counterParty": {
        "data": {
          "id": "16942577770351-anc_cp",
          "type": "CounterParty"
      "account": {
        "data": {
          "id": "16922123768364-anc_acc",
          "type": "DepositAccount"
      "subAccount": {
        "data": {
          "id": "16922609921350-anc_subacc",
          "type": "SubAccount"
      "customer": {
        "data": {
          "id": "16922123736510-anc_bus_cst",
          "type": "BusinessCustomer"

Transfer States

Transfers have the following states:

pendingPending represents the initial status of a transfer as soon as it is initiated. It serves as a temporary state that typically updates to "Successful" within seconds, or in certain instances, it may update to "Failed.”
completedCompleted indicates that a transfer has was successful without any issues. The majority of transfers achieve this status within seconds.
failedA transfer marked as "Failed" signifies that it has not been completed due to various factors. Possible reasons include issues with the recipient's account, recipient's bank account not reachable or errors during the transfer process.
reversedThis indicates the status of a transfer that was initially successful but had to be reversed and returned to the sending account balance. due to its inability to be processed in the recipient's bank account.

When a transfer is in pending state, you can call the verify transfer endpoint, if we have sent the request to the provider for processing, this endpoint will query the provider for the status and update the transfer with that status. If the transfer hasn't been sent, it will return as pending.


When you initiate a transfer, it will take a few seconds or minutes for the transfer to complete processing. Which is why we advice you to listen to the webhook events.

Transfer related Webhook Events

Transfer Related Webhook Events:

Webhook EventDescription
nip.transfer.initiatedGenerated when Nip Transfer is initiated.
nip.transfer.successfulGenerated when Nip Transfer is successful.
nip.transfer.failedGenerated when Nip Transfer fails.
nip.incomingTransfer.receivedGenerated when Incoming Transfer is Received. You don't need the event. Listen to payment.settled and payment.received events instead.
book.transfer.initiatedThis event is generated when a Book Transfer is initiated.
book.transfer.successfulGenerated when Book Transfer is successful.
book.transfer.failedThis is generated when a Book Transfer fails.