AMI developer guide
Get started
Connect to recipient-side test evidence.
Build against the sandbox
AMI is an independent recipient-side payment testing service. Your institution can retrieve synthetic records in the sandbox after an AMI administrator approves your account and assigns an institution.
- Create an account and verify your email.
- Wait for review and institution assignment.
- Create a sandbox key and keep it on your server.
Quickstart / list transactions
A real sandbox request
curl "$AMI_BASE_URL/api/sandbox/v1/transactions?scenario=all&limit=10" \
-H "Authorization: Bearer $AMI_SANDBOX_KEY" \
-H "X-AMI-Environment: sandbox"Set the origin for your own environment; keys belong in server-side secrets, never client bundles.
API details
| Resource | Method | Purpose |
|---|---|---|
| GET /api/sandbox/v1/transactions?scenario=all&limit=20 | GET | List records. Add cursor=next_cursor to continue. |
| GET /api/sandbox/v1/transactions/:id | GET | Read one tenant-bound record |
| GET /api/sandbox/v1/transactions/:id/evidence | GET | Download the record’s PDF evidence |
Transaction object
Recipient-side fields
| Field | Meaning and format |
|---|---|
| receiver_full_name | Recipient name observed in the test. |
| amount_expected / amount_received | Decimal strings in major units, with currency as the payout currency. |
| currency | Payout currency code. |
| transaction_narrative | Narrative shown to the recipient, or null when not observed. |
| sender_name_received | true, false, or null when not observed/recorded. |
| fx_rate / fx_base_currency | Decimal exchange rate quoted as payout currency per one unit of the base currency (USD). |
| fees_charged / fee_amount | Nullable observation; fee amount is a decimal string in payout currency. |
| sender_debited_at / beneficiary_received_at | ISO timestamps; sandbox fixtures use January 2026 dates. |
| delivery_time_seconds | Elapsed delivery duration in seconds. |
| evidence | PDF media type, filename and evidence path; retrieve from the evidence endpoint. |
Illustrative synthetic collection
{
"object": "list",
"environment": "sandbox",
"synthetic": true,
"data": [
{
"id": "tx_example_synthetic",
"reference": "AMI-TEST-202601-01",
"institution_id": "institution_scoped_by_key",
"environment": "sandbox",
"synthetic": true,
"scenario": "verified",
"country": "GH",
"currency": "GHS",
"receiver_full_name": "Ama Mensah",
"amount_expected": "1250.00",
"amount_received": "1250.00",
"transaction_narrative": "January sandbox test",
"sender_name_received": true,
"fx_rate": "15.2500",
"fx_base_currency": "USD",
"fees_charged": false,
"fee_amount": "0.00",
"sender_debited_at": "2026-01-14T10:12:00.000Z",
"beneficiary_received_at": "2026-01-14T10:12:42.000Z",
"delivery_time_seconds": 42,
"evidence": {
"media_type": "application/pdf",
"file_name": "sandbox-evidence.pdf",
"path": "/api/sandbox/v1/transactions/tx_example_synthetic/evidence"
}
}
],
"pagination": {
"next_cursor": "next_cursor_from_response",
"has_more": true
}
}Illustrative schema only. Record values are synthetic. The institution is resolved from the generated key; do not send institution IDs as request parameters.
