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
string
required
Your public API key.
string
required
Your API secret. Use a
stl_test_... value in sandbox, stl_live_... in production.string
required
Your business ID.
Form fields
file
required
The filled-in Interstellas Excel bulk upload template, matching the format above.
string
required
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
boolean
true on success.string
"Bulk transfer batch accepted".string
Unique ID for this batch. Use this to poll the preview and to process the batch once you’re ready.
string
A human-readable reference for this batch.
integer
The number of rows accepted from the spreadsheet.
string
Always
"pending" in this response — recipient name verification hasn’t finished yet.string
"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
string
required
The ID returned from the upload response.
Headers
string
required
Your public API key.
string
required
Your API secret. Use a
stl_test_... value in sandbox, stl_live_... in production.string
required
Your business ID.
Response
string
"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.string
Sum of every row’s
amount, in kobo.integer
Number of rows whose recipient name was successfully verified.
integer
Number of rows whose recipient name could not be verified.
integer
Number of rows still being checked. Poll again until this reaches
0.array
Every row from the spreadsheet, in order.
string
The item’s ID — use this with Edit an item below.
string
The account number for this row.
string
The bank name for this row, as resolved back from the bank code Interstellas matched it to.
string
The amount for this row, in kobo.
string
The verified account holder name, once resolved.
null until then, or if verification failed.string
pending, resolved, or failed.string
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. Don’t want to fix it, just remove it? See Delete an item instead.
Nothing about this endpoint is actually specific to uploaded batches — the same
pending/enquiry_complete window applies to batches created via JSON too, which only ever reach pending (not enquiry_complete, since there’s no name-enquiry step for JSON submissions). It’s documented here because fixing a failed name-enquiry row is the main reason you’d use it.Endpoint
Path parameters
string
required
The batch the item belongs to.
string
required
The item’s
id, from the preview response.Headers
string
required
Your public API key.
string
required
Your API secret. Use a
stl_test_... value in sandbox, stl_live_... in production.string
required
Your business ID.
Request body
At least one of the following is required.string
Corrected account number.
string
Corrected bank name — same matching rules as the Excel file format above (exact name match, case-insensitive).
string
Corrected amount, in kobo.
string
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.