Create a bulk transfer
Submit a batch of transfers.
Process a bulk transfer
Start background processing for a batch.
Get a bulk transfer
Retrieve a batch and every item inside it.
List bulk transfers
Retrieve every batch for your business.
Reprocess
Retry a failed batch, or a single failed item.
Reprocess logs
Audit trail of every retry attempt.
How it works
- You submit a batch. A
POSTrequest with abatchNameand atransfersarray — one entry per payment you want to make. Interstellas validates the batch, writes a row for the batch and one row per transfer, and responds immediately with201 Created. Nothing has been paid out yet at this point — every item starts inpending. - You start processing. Batches don’t begin executing on their own — call Process a bulk transfer with the
bulkTransferIdright after creating it. This queues everypendingitem for background execution and returns202 Acceptedimmediately. - Interstellas processes items in the background. Each item moves through
pending→processing→completedorfailedindependently. There’s no webhook for this today — poll Get a bulk transfer to watch progress. - The batch status reflects its items. Once every item has reached a final state, the batch itself settles into
completed(all items succeeded),failed(none succeeded), orpartially_completed(a mix). - You reprocess what failed. If any items end up
failed, you can retry all of them at once or one at a time — see Reprocess. Items that alreadycompletedare never touched by a retry.
Statuses
Batch (status on the bulk transfer)
| Status | Meaning |
|---|---|
pending | Batch created; no items have started processing yet |
processing | At least one item is currently being processed |
completed | Every item completed successfully |
failed | Every item failed |
partially_completed | A mix of completed and failed items |
Item (status on each transfer within items)
| Status | Meaning |
|---|---|
pending | Not yet processed |
processing | Currently being processed |
completed | Transfer succeeded — see providerReference |
failed | Transfer failed — see errorMessage and errorCode |
Only items in
failed status are eligible for reprocessing. A pending or processing item hasn’t finished yet — wait for it to reach a final state.Why an item fails
errorMessage on a failed item is a human-readable description of what went wrong. Common causes include:
- Recipient account validation failed — the account number/bank code combination couldn’t be verified before the transfer was attempted.
- Insufficient funds — your business account didn’t have enough available balance to cover the transfer at the moment it was processed. Because items are processed after the batch is accepted, this can happen even though the batch itself was created successfully.
- The receiving bank or provider rejected the transfer — surfaced with whatever reason the provider returned.
errorCode is provider- or validation-supplied and not a fixed enum — treat it as informational context alongside errorMessage, not a value to branch your application logic on.
Idempotency and uniqueness
batchNamemust be unique per business. Submitting the samebatchNametwice returns409 Conflictrather than creating a duplicate batch — use this to safely retry a batch creation request without double-submitting if your client times out.retrievalReferenceon each transfer must be unique across your business’s transfer history, not just within the batch. Reusing one — even from a previous batch — is rejected.
Reprocessing in depth
Reprocessing a failed item doesn’t reuse the original transaction reference — Interstellas generates a new transaction reference for each attempt and keeps the very first one around asoriginalTransactionReference, so you can always trace an item back to its first attempt even after several retries. reprocessCount tracks how many times an item has been retried.
Reprocessing is asynchronous, same as the original batch: the reprocess endpoints return 202 Accepted immediately, and you poll Get a bulk transfer (or the item’s own reprocess logs) to see the outcome. Every retry — successful or not — is recorded as a reprocess log entry you can query independently of the batch/item’s current state.
Field naming
Bulk transfer responses usecamelCase field names throughout (bulkReference, totalItems, receiverAccountNumber, and so on) — this differs in casing convention from a couple of older endpoints elsewhere in this API, but is consistent across every bulk transfer response.
Amounts
As with every other transfer endpoint in this API,amount is denominated in kobo (the smallest unit of NGN) and sent as a string, e.g. "100000" for ₦1,000.