Collect: persistent customer accounts
Persistent virtual IBANs for your customers: creation, rules, lifecycle and statements.
Creating accounts
A collection account needs a currency and a verified holder. The kyb_id references a holder record created through our onboarding API or the console. Use external_ref to store your own customer identifier; it is returned on every credit so you never need a lookup table.
curl https://api.neofin.tech/v1/collection-accounts \
-H "Authorization: Bearer $NEO_API_KEY" \
-H "Idempotency-Key: 7f1c2e4a-9b0d-4c55-a1e3-2d6f0b9c8e11" \
-H "Content-Type: application/json" \
-d '{
"currency": "EUR",
"holder": {
"type": "business",
"legal_name": "Helios Merchants B.V.",
"kyb_id": "kyb_31QZ"
},
"external_ref": "mch_8F2K91",
"rules": {
"first_party_only": true,
"max_credit_amount": 5000000
},
"labels": { "region": "NL" }
}'
Rules
| Rule | Type | Effect |
|---|---|---|
| first_party_only | boolean, default true | Return any credit whose payer name does not match the holder. |
| min_credit_amount | integer | Return credits below this amount. |
| max_credit_amount | integer | Hold credits above this amount for review. |
| allowed_payer_countries | array of ISO 3166 codes | Return credits from other countries. |
| name_match_auto_accept | number 0–1 | Auto-accept close matches at or above this score. Defaults to the programme setting. |
Rules are updated with PATCH /collection-accounts/{id} and take effect for credits received after the update.
Freeze, unfreeze and close
Freezing an account returns any new credit with the reason account_frozen while preserving the balance. Closing an account is permanent: the balance must be zero, and later credits are returned with account_closed.
curl -X POST https://api.neofin.tech/v1/collection-accounts/ca_9Hc2LmQ/freeze \
-H "Authorization: Bearer $NEO_API_KEY" \
-H "Idempotency-Key: 2b1a..."
Hierarchies and labels
Labels are free-form key-value pairs. Use them to group accounts by merchant, region or business unit; statements and reports can be filtered by label, and sweep rules can target a label group.
Statements
Daily statements are available per account from 02:00 UTC for the previous day, in CAMT.053, CSV and JSON.
curl "https://api.neofin.tech/v1/collection-accounts/ca_9Hc2LmQ/statements?date=2026-11-04&format=camt053" \
-H "Authorization: Bearer $NEO_API_KEY"