Catch up on events you missed
Returns the events sent to your webhooks, in the order we received them, each exactly as it was delivered. An event that arrived late comes after the ones before it, even if its createdAt is earlier, so after never skips it. Events show up here a few seconds after they arrive. Pass the id of the last event you processed as after to get everything since; leave it out to start from the first event. Keep calling with nextAfter until it is absent, then resume later from the id of the last item. Collection events need the collections.read permission, payout and utility purchase events need disbursements.read, settlement events need settlements.read and transfer events need wallettransfer.read; you only see the types your key holds. Events only arrive once your business has a webhook endpoint, and utility purchase, settlement and transfer events start after an endpoint is created or edited in the console. Events are kept for 90 days. An after older than that is refused with 400; start again without it.
/v1/eventsAuthorizationBearer token (JWT) · headerrequiredA token from POST /v1/oauth/token on the iSmartPay identity service, obtained with an API credential's client id and secret.
afterstringThe id of the last event you processed. An id that is not one of your events, or one older than 90 days, is refused.
limitintegerHow many events to return, 1 to 200. Defaults to 50.
A page of events.
itemsCollectionAcceptedEvent | CollectionStatusChangedEvent | PayoutAcceptedEvent | PayoutStatusChangedEvent | UtilityPurchaseAcceptedEvent | UtilityPurchaseStatusChangedEvent | SettlementStatusChangedEvent | TransferStatusChangedEvent | TransferReceivedEvent[]requiredShow propertiesHide properties
CollectionAcceptedEvent | CollectionStatusChangedEvent | PayoutAcceptedEvent | PayoutStatusChangedEvent | UtilityPurchaseAcceptedEvent | UtilityPurchaseStatusChangedEvent | SettlementStatusChangedEvent | TransferStatusChangedEvent | TransferReceivedEventidstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataCollectionrequiredThe collection as it stood when the event was sent. Fields the event did not carry are left out, so fetch the collection by reference when you need the full record.
Show propertiesHide properties
referencestringrequiredThe reference you chose.
amountstringThe requested amount. A decimal string in major units.
currencystringThree-letter currency code.
statusstringrequiredWhere the request stands, reported as it is: accepted, dispatched, in_review, held, settled, failed or expired. Others can appear, so do not treat this list as closed.
providerstringThe provider used.
feestringThe fee charged. Left out when none was recorded. A decimal string in major units.
feeBearerstringWho pays the fee. initiator: the party who starts the request pays the amount plus the fee, and the recipient gets the full amount. non_initiator: the fee comes out of what the recipient gets.
initiatornon_initiatorpayerAmountstringWhat the payer is charged. Left out when the fee bearer is not known. A decimal string in major units.
recipientAmountstringWhat the recipient receives. Left out when the fee bearer is not known. A decimal string in major units.
notestringThe note you sent.
failureReasonstringThe provider's own reason when the request failed. Left out otherwise.
createdAtstring<date-time>completedAtstring<date-time>When it reached its final status. Left out while it is still moving, and on older movements where the time was not recorded.
channelstringHow it was started. api is the only value today.
apisettlementStatusstringWhere the money stands with settlement: not_eligible, eligible, claimed or settled.
not_eligibleeligibleclaimedsettledreconciliationReconciliationWhat the platform's check against the provider concluded.
Show propertiesHide properties
statusstringrequiredunchecked (not checked yet), matched (the provider agrees) or mismatched (the provider disagrees; the platform is looking into it).
uncheckedmatchedmismatchedcheckedAtstring<date-time>When it was last checked. Left out until it has been.
parentLineageLinkThe movement this one undoes, when it is a reversal. Left out otherwise.
Show propertiesHide properties
typestringrequiredWhat kind of movement it is.
collectionpayoutwallet_transferreferencestringrequiredIts reference.
compensationLineageLinkThe reversal recorded against this movement. Left out when there is none.
idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataCollectionrequiredThe collection as it stood when the event was sent. Fields the event did not carry are left out, so fetch the collection by reference when you need the full record.
Show propertiesHide properties
referencestringrequiredThe reference you chose.
amountstringThe requested amount. A decimal string in major units.
currencystringThree-letter currency code.
statusstringrequiredWhere the request stands, reported as it is: accepted, dispatched, in_review, held, settled, failed or expired. Others can appear, so do not treat this list as closed.
providerstringThe provider used.
feestringThe fee charged. Left out when none was recorded. A decimal string in major units.
feeBearerstringWho pays the fee. initiator: the party who starts the request pays the amount plus the fee, and the recipient gets the full amount. non_initiator: the fee comes out of what the recipient gets.
initiatornon_initiatorpayerAmountstringWhat the payer is charged. Left out when the fee bearer is not known. A decimal string in major units.
recipientAmountstringWhat the recipient receives. Left out when the fee bearer is not known. A decimal string in major units.
notestringThe note you sent.
failureReasonstringThe provider's own reason when the request failed. Left out otherwise.
createdAtstring<date-time>completedAtstring<date-time>When it reached its final status. Left out while it is still moving, and on older movements where the time was not recorded.
channelstringHow it was started. api is the only value today.
apisettlementStatusstringWhere the money stands with settlement: not_eligible, eligible, claimed or settled.
not_eligibleeligibleclaimedsettledreconciliationReconciliationWhat the platform's check against the provider concluded.
parentLineageLinkThe movement this one undoes, when it is a reversal. Left out otherwise.
compensationLineageLinkThe reversal recorded against this movement. Left out when there is none.
idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataPayoutrequiredThe payout as it stood when the event was sent. Fields the event did not carry are left out, so fetch the payout by reference when you need the full record.
Show propertiesHide properties
referencestringrequiredThe reference you chose.
amountstringThe requested amount. A decimal string in major units.
currencystringThree-letter currency code.
statusstringrequiredWhere the request stands, reported as it is: accepted, dispatching, in_review, held, delivered, failed or refunded. Others can appear, so do not treat this list as closed.
providerstringThe provider used.
feestringThe fee charged. Left out when none was recorded. A decimal string in major units.
feeBearerstringWho pays the fee. initiator: the party who starts the request pays the amount plus the fee, and the recipient gets the full amount. non_initiator: the fee comes out of what the recipient gets.
initiatornon_initiatorpayerAmountstringWhat the payer is charged. Left out when the fee bearer is not known. A decimal string in major units.
recipientAmountstringWhat the recipient receives. Left out when the fee bearer is not known. A decimal string in major units.
notestringThe note you sent.
failureReasonstringThe provider's own reason when the request failed. Left out otherwise.
createdAtstring<date-time>completedAtstring<date-time>When it reached its final status. Left out while it is still moving, and on older movements where the time was not recorded.
channelstringHow it was started. api is the only value today.
apireconciliationReconciliationWhat the platform's check against the provider concluded.
parentLineageLinkThe movement this one undoes, when it is a reversal. Left out otherwise.
compensationLineageLinkThe reversal recorded against this movement. Left out when there is none.
idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataPayoutrequiredThe payout as it stood when the event was sent. Fields the event did not carry are left out, so fetch the payout by reference when you need the full record.
Show propertiesHide properties
referencestringrequiredThe reference you chose.
amountstringThe requested amount. A decimal string in major units.
currencystringThree-letter currency code.
statusstringrequiredWhere the request stands, reported as it is: accepted, dispatching, in_review, held, delivered, failed or refunded. Others can appear, so do not treat this list as closed.
providerstringThe provider used.
feestringThe fee charged. Left out when none was recorded. A decimal string in major units.
feeBearerstringWho pays the fee. initiator: the party who starts the request pays the amount plus the fee, and the recipient gets the full amount. non_initiator: the fee comes out of what the recipient gets.
initiatornon_initiatorpayerAmountstringWhat the payer is charged. Left out when the fee bearer is not known. A decimal string in major units.
recipientAmountstringWhat the recipient receives. Left out when the fee bearer is not known. A decimal string in major units.
notestringThe note you sent.
failureReasonstringThe provider's own reason when the request failed. Left out otherwise.
createdAtstring<date-time>completedAtstring<date-time>When it reached its final status. Left out while it is still moving, and on older movements where the time was not recorded.
channelstringHow it was started. api is the only value today.
apireconciliationReconciliationWhat the platform's check against the provider concluded.
parentLineageLinkThe movement this one undoes, when it is a reversal. Left out otherwise.
compensationLineageLinkThe reversal recorded against this movement. Left out when there is none.
idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataUtilityPurchaserequiredThe purchase as it stood when the event was sent. The beneficiary's number and the payer are not carried, and other fields the event did not carry are left out, so fetch the purchase by reference when you need the full record.
Show propertiesHide properties
referencestringrequiredThe reference you chose.
statusstringrequiredWhere the purchase stands, reported as it is: accepted, awaiting_payment, vending, delivered, failed, refunding, refunded, refund_failed or outcome_unknown. delivered, failed and refunded are final. outcome_unknown and refund_failed are resolved by iSmartPay: do not buy again with a new reference.
productobjectShow propertiesHide properties
idstringcategorystringnetworkstringnamestringbeneficiaryobjectShow propertiesHide properties
msisdnstringamountstringThe amount bought. A decimal string in major units.
currencystringThree-letter currency code. Only GHS is sold.
feestringThe fee charged. Left out when none was recorded. A decimal string in major units.
grossstringThe amount plus the fee. Left out when no fee was recorded. A decimal string in major units.
fundingobjectShow propertiesHide properties
typestringwalletcollectionpayerobjectShow propertiesHide properties
providerstringmsisdnstringfailureReasonstringWhy the purchase failed, for example vend_failed or insufficient_balance. Left out otherwise.
createdAtstring<date-time>idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataUtilityPurchaserequiredThe purchase as it stood when the event was sent. The beneficiary's number and the payer are not carried, and other fields the event did not carry are left out, so fetch the purchase by reference when you need the full record.
Show propertiesHide properties
referencestringrequiredThe reference you chose.
statusstringrequiredWhere the purchase stands, reported as it is: accepted, awaiting_payment, vending, delivered, failed, refunding, refunded, refund_failed or outcome_unknown. delivered, failed and refunded are final. outcome_unknown and refund_failed are resolved by iSmartPay: do not buy again with a new reference.
productobjectShow propertiesHide properties
idstringcategorystringnetworkstringnamestringbeneficiaryobjectShow propertiesHide properties
msisdnstringamountstringThe amount bought. A decimal string in major units.
currencystringThree-letter currency code. Only GHS is sold.
feestringThe fee charged. Left out when none was recorded. A decimal string in major units.
grossstringThe amount plus the fee. Left out when no fee was recorded. A decimal string in major units.
fundingobjectShow propertiesHide properties
typestringwalletcollectionpayerobjectShow propertiesHide properties
providerstringmsisdnstringfailureReasonstringWhy the purchase failed, for example vend_failed or insufficient_balance. Left out otherwise.
createdAtstring<date-time>idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataSettlementRunEventDatarequiredA settlement run as carried by its event. The event has no run id; list runs with GET /v1/settlements and match on reference when you need it.
Show propertiesHide properties
referencestringrequiredstatusstringrequiredrunning or completed. Others can appear, so do not treat this list as closed.
outcomestringSet once completed: settled, failed_partial or failed_all. Others can appear.
itemCountintegerrequiredHow many payments the run made.
totalstringrequiredThe amount settled. A decimal string in major units.
currencystringrequiredstartedAtstring<date-time>requiredcompletedAtstring<date-time>idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataTransferrequiredThe transfer as it stood when the event was sent. The recipient's handle and name are not carried; fetch the transfer by reference when you need them.
Show propertiesHide properties
referencestringrequiredamountstringrequiredA decimal string in major units.
currencystringrequiredstatusstringrequiredWhere the transfer stands: pending, held, completed, declined or failed. Others can appear, so do not treat this list as closed.
recipientHandlestringReturned when you send.
recipientNamestringThe handle's display name, else the recipient's trading name, else registered name, when known.
failureReasonstringWhy a declined or failed transfer did not go through. Left out otherwise.
createdAtstring<date-time>idstringrequiredThe event id, the same as the Webhook-Id header.
typestringrequiredcreatedAtstring<date-time>requiredWhen the change happened.
dataTransferReceivedrequiredThe transfer that reached your wallet.
Show propertiesHide properties
referencestringrequiredThe reference the sending business chose.
amountstringrequiredWhat reached your wallet. A decimal string in major units.
currencystringrequiredsenderNamestringThe sending business's trading name, else registered name, when known.
completedAtstring<date-time>nextAfterstringPass as after to get the next page. Absent on the last page.
The request is not valid. message says which field.
errorobjectrequiredShow propertiesHide properties
codestringrequiredA stable, machine-readable code. Branch on this, not on the message. Codes include invalid_input, unauthenticated, forbidden, environment_mismatch, not_found, rate_limited, idempotency_key_reused, request_in_flight, limits_missing, limits_unusable, tier_ineligible, transaction_limit_exceeded, daily_limit_exceeded, monthly_limit_exceeded, business_suspended, business_deactivated, environment_unknown, duplicate_reference, provider_error, provider_timeout, destination_not_verified, destination_verification_unavailable, upstream_timeout and internal.
messagestringrequiredReadable detail for a person. For any 5xx it is always the fixed text internal server error.
The token is missing, expired or not valid. Get a new one from the token endpoint.
errorobjectrequiredShow propertiesHide properties
codestringrequiredA stable, machine-readable code. Branch on this, not on the message. Codes include invalid_input, unauthenticated, forbidden, environment_mismatch, not_found, rate_limited, idempotency_key_reused, request_in_flight, limits_missing, limits_unusable, tier_ineligible, transaction_limit_exceeded, daily_limit_exceeded, monthly_limit_exceeded, business_suspended, business_deactivated, environment_unknown, duplicate_reference, provider_error, provider_timeout, destination_not_verified, destination_verification_unavailable, upstream_timeout and internal.
messagestringrequiredReadable detail for a person. For any 5xx it is always the fixed text internal server error.
The request was understood and refused. Common causes: the token is not an API credential's (forbidden); the credential is for the other environment (environment_mismatch); it does not have the permission this operation needs (forbidden); a limit was reached (limits_missing, limits_unusable, tier_ineligible, transaction_limit_exceeded, daily_limit_exceeded, monthly_limit_exceeded); or iSmartPay has suspended or deactivated the business (business_suspended, business_deactivated). A suspended business's API credentials stop exchanging for tokens, so a request made with a token issued just before the suspension is refused with business_suspended.
errorobjectrequiredShow propertiesHide properties
codestringrequiredA stable, machine-readable code. Branch on this, not on the message. Codes include invalid_input, unauthenticated, forbidden, environment_mismatch, not_found, rate_limited, idempotency_key_reused, request_in_flight, limits_missing, limits_unusable, tier_ineligible, transaction_limit_exceeded, daily_limit_exceeded, monthly_limit_exceeded, business_suspended, business_deactivated, environment_unknown, duplicate_reference, provider_error, provider_timeout, destination_not_verified, destination_verification_unavailable, upstream_timeout and internal.
messagestringrequiredReadable detail for a person. For any 5xx it is always the fixed text internal server error.
Too many requests for this credential. Wait the number of seconds in the Retry-After header, then try again.
errorobjectrequiredShow propertiesHide properties
codestringrequiredA stable, machine-readable code. Branch on this, not on the message. Codes include invalid_input, unauthenticated, forbidden, environment_mismatch, not_found, rate_limited, idempotency_key_reused, request_in_flight, limits_missing, limits_unusable, tier_ineligible, transaction_limit_exceeded, daily_limit_exceeded, monthly_limit_exceeded, business_suspended, business_deactivated, environment_unknown, duplicate_reference, provider_error, provider_timeout, destination_not_verified, destination_verification_unavailable, upstream_timeout and internal.
messagestringrequiredReadable detail for a person. For any 5xx it is always the fixed text internal server error.
Something failed on our side. The message is fixed. If the request was a POST, retry with the same Idempotency-Key and body.
errorobjectrequiredShow propertiesHide properties
codestringrequiredA stable, machine-readable code. Branch on this, not on the message. Codes include invalid_input, unauthenticated, forbidden, environment_mismatch, not_found, rate_limited, idempotency_key_reused, request_in_flight, limits_missing, limits_unusable, tier_ineligible, transaction_limit_exceeded, daily_limit_exceeded, monthly_limit_exceeded, business_suspended, business_deactivated, environment_unknown, duplicate_reference, provider_error, provider_timeout, destination_not_verified, destination_verification_unavailable, upstream_timeout and internal.
messagestringrequiredReadable detail for a person. For any 5xx it is always the fixed text internal server error.