New to bulk transfer? Read the overview first.
transfers array, you can upload an Excel spreadsheet instead. This flow has a few more steps than the JSON path, because recipient bank details in a spreadsheet haven’t been verified yet:
- Upload the file — Interstellas parses it, creates the batch and its items, and kicks off recipient name verification in the background.
- Poll the preview to see which rows resolved to a real account name and which didn’t.
- Fix any rows that failed verification, one at a time.
- Start processing, same as any other batch — see Process a bulk transfer.
Download the template
Interstellas Excel bulk upload template
Download the .xlsx template — start every upload from this file.
Bank column. Leave that sheet in place when you upload; only Sheet1 is read.
Excel file format
The template above already matches this format — this section is a reference for what it contains, not a spec to build your own file against.- File type:
.xlsxor.xls, up to 5 MB. - Row 1 must be a header row. Column order doesn’t matter, but the header text does — matched case-insensitively:
- Bank must exactly match a recognized bank name (case-insensitive) — not a bank code. Use the Bank List sheet in the template to confirm valid spelling. An unrecognized name fails the whole upload; see Errors below.
- Account Number — if Excel has converted your account numbers to plain numbers and dropped leading zeros, that’s fine: numbers are re-padded to 10 digits automatically.
- Amount accepts
₦and,characters and strips them (e.g.₦5,000and5000both parse fine) — but the underlying value must still be kobo, matching every other endpoint in this API. It must be a positive number. - Completely blank rows (every cell empty) are silently skipped rather than treated as errors.
Upload
Endpoint
multipart/form-data.
Headers
Your public API key.
Your API secret. Use a
stl_test_... value in sandbox, stl_live_... in production.Your business ID.
Form fields
The filled-in Interstellas Excel bulk upload template, matching the format above.
A name for this batch, up to 255 characters. Must be unique among your business’s bulk transfers, same as Create a bulk transfer.
Response
true on success."Bulk transfer batch accepted".Unique ID for this batch. Use this to poll the preview and to process the batch once you’re ready.
A human-readable reference for this batch.
The number of rows accepted from the spreadsheet.
Always
"pending" in this response — recipient name verification hasn’t finished yet."Batch received. Recipient name verification is in progress." — a human-readable nudge to go poll the preview endpoint next.Code examples
Example response
Errors
Validation is all-or-nothing: if any row has a bad amount, missing account number, or unrecognized bank name, the entire upload is rejected and no batch is created. Fix the spreadsheet and re-upload.
Preview
Poll this to check the status of recipient name verification after uploading.Endpoint
Path parameters
The ID returned from the upload response.
Headers
Your public API key.
Your API secret. Use a
stl_test_... value in sandbox, stl_live_... in production.Your business ID.
Response
"pending" while verification is still running, "enquiry_complete" once every row has been checked. This is a distinct value from the batch statuses used elsewhere — it only applies to uploaded batches before you start processing.Sum of every row’s
amount, in kobo.Number of rows whose recipient name was successfully verified.
Number of rows whose recipient name could not be verified.
Number of rows still being checked. Poll again until this reaches
0.Every row from the spreadsheet, in order.
The item’s ID — use this with Edit an item below.
The account number for this row.
The bank name for this row, as resolved back from the bank code Interstellas matched it to.
The amount for this row, in kobo.
The verified account holder name, once resolved.
null until then, or if verification failed.pending, resolved, or failed.Why verification failed, if it did.
null otherwise.Code examples
Example response
Errors
Edit an item
Fix a row before processing — most commonly used to correct a row whosenameEnquiryStatus came back failed.
Endpoint
Path parameters
The batch the item belongs to.
The item’s
id, from the preview response.Headers
Your public API key.
Your API secret. Use a
stl_test_... value in sandbox, stl_live_... in production.Your business ID.
Request body
At least one of the following is required.Corrected account number.
Corrected bank name — same matching rules as the Excel file format above (exact name match, case-insensitive).
Corrected amount, in kobo.
Corrected narration.
Changing
receiverAccountNumber or receiverBankName automatically re-runs name verification for this item before responding — the item’s nameEnquiryStatus, recipientName, and nameEnquiryError in the response already reflect the new lookup. Changing only amount or narration does not trigger a re-check.Response
Returns the full updated item — the same shape as an entry in the preview endpoint’sitems array, plus a few internal bookkeeping fields (transactionReference, reprocessCount, etc. — all still null/0 at this stage since nothing has been processed yet).
Code examples
Example response
Errors
See Errors for the full envelope and error code reference.
Ready to process
Once every row you care about showsnameEnquiryStatus: "resolved", start the batch the same way as any other bulk transfer:
Process a bulk transfer
Start executing the transfers in this batch.