AfroPin Developers
Postman Sign in Get test keys

What you sell

Products you can sell

List the PIN products you are allowed to sell. Each product is a template set up for your account, with its currency, amounts and commission.

GET https://afropin.com/api/v1/reseller/catalog

HMAC-signed request with a unique Idempotency-Key header. Authentication

With an SDK
PHP$afropin->reseller->catalog->list($params)
Node.jsafropin.reseller.catalog.list(params)
Pythonafropin.reseller.catalog.list(params)
Javaafropin.reseller().catalog().list(params)

Query parameters

page integer | "all" Optional

Page to return, starting at 1. Pass all to return every product without pagination.

limit integer Optional

Products per page. Defaults to 20.

Only active products are returned. Each item has the same fields as Look up a product. Pass its id as catalog_id when you issue a PIN. Paged responses carry a paging object; it is left out when page=all.

Request

GET /api/v1/reseller/catalog?page=1&limit=20

Response 200

{
    "ok": true,
    "data": [
        {
            "id": "2c3ec3c4-b729-4d40-9a0a-80e55d683ee6",
            "pin_type_id": "7a1d5e93-0c4b-4f62-9e18-3b2a6c9d4f05",
            "name": "Everyday Shopping PIN",
            "currency": "NGN",
            "min": 1000,
            "max": 500000,
            "amount_rule": "any_amount",
            "denominations": null,
            "logo": "https://example.com/storage/logo.png",
            "artwork": "https://example.com/storage/card.png",
            "description": "Spend at any participating store.",
            "how_to_redeem": "Show the PIN at checkout.",
            "terms": "Valid for 365 days from issue.",
            "categories": [
                "Groceries"
            ],
            "duration": "365",
            "can_top_up": true,
            "can_spend": true,
            "spend_rule": "partial",
            "new_code_after_top_up": false,
            "new_code_after_spend": true,
            "sale_commission_percent": 2.5,
            "cashout_fee_percent": 3,
            "cashout_caps": {
                "per_day": 100000,
                "per_week": 300000,
                "per_month": 1000000
            }
        }
    ],
    "paging": {
        "page": 1,
        "pages": 1,
        "per_page": 20,
        "total": 1,
        "next": null,
        "previous": null
    }
}

Errors

Failed requests return a stable code with a translated message. Branch on code, never on the message.

{
    "ok": false,
    "error": {
        "code": "invalid_api_key",
        "message": "This API key is unknown, revoked or expired, or live access is not switched on",
        "fields": null
    }
}
All error codes →