collection.settled to your webhook
endpoint, and adds the collection to GET /v2/collections. There is no work
for you on the side of the payer.
Where to send fiat: virtual accounts
Your org has one virtual account for each fiat asset that Jenzy enabled for collections.GET /v2/virtual-accounts?asset=KES gives the coordinates. Give
them to the person who pays you.
status: "pending" is not ready yet. Wait for
status: "active" before you give the details to a payer.
KES has two ways to pay. A payer at a bank sends a transfer to the
account_number at the institution, over PesaLink, RTGS, or SWIFT. A payer
on M-Pesa uses the paybill.
The payer enters paybill_number as the business number, and your
account_number as the account number. Both ways credit the same balance.
asset=USDT on this endpoint gets 422. A stablecoin has no virtual
account. It has a deposit address.
Where to send stablecoins: deposit addresses
POST /v2/deposit-addresses { "network": "tron" } gives you an address on
that network. The first call makes the address. Each later call for the same
network returns the same address. There is no Idempotency-Key.
- An address is per network, not per asset.
assetslists each stablecoin that the address takes. Oneethereumaddress takes both USDT and USDC. - The networks are
ethereum,solana, andtron. Hermes does not support another network, not even one that uses the same address form. GET /v2/deposit-addresseslists your addresses.
The collection resource
Read collections withGET /v2/collections and GET /v2/collections/{id}.
GET /v2/collections puts the newest collection first and uses keyset
pagination. Filter with asset. The data field of the collection.settled
event uses the same shape.
amount is what landed on your balance. It is one figure. There is no
fee field and no gross figure. The collection fee that you agreed with
Jenzy is already out of it. Your balance increases by exactly amount.
The source object
source tells you where the money came from. Its type mirrors the
destination.type of a payout.
A bank pay-in carries no payer identity. Hermes does not get the name or
the account of the payer, so
source has none. To match a pay-in to your own
customer, use the amount and the time. Or give each customer a separate
instruction. A paybill payment also shows as type: "bank".
A wallet source names your own deposit address and its network. It does not
name the address of the sender. network can be null for a short time
while Hermes resolves it.
How to learn about a collection
Hermes sends exactly onecollection.settled event for each movement of your
balance. The delivery carries api_version: "v2". Process each event id
one time only. After an outage, use GET /v2/collections to catch up. A
poll and a webhook give the same data.
A collection can take some minutes to appear after the payer sends the
money. A stablecoin transfer appears after the network confirms it.
Reversals
Sometimes a provider takes a pay-in back after it settles. Hermes then sends you acollection.reversed event. The status of the collection changes to
reversed on the read endpoints.