.gitignorecommits | blame
IFSC-list.schema.jsoncommits | blame
IFSC.schema.jsoncommits | blame
README.mdcommits | blame
banks.schema.jsoncommits | blame
by-bank.schema.jsoncommits | blame
package-lock.jsoncommits | blame
package.jsoncommits | blame
sublet.schema.jsoncommits | blame

# razorpay-ifsc-schemas

json-schema(s) of ifsc data
[released]( by

Note: The schemas only validate the types and required properties. Later,
enumerations, patterns, and limits can be added to restrict values further.

## Issues

[v2.0.11]( has some
issues. They can be identified with: `ajv -s <schema> -d <data>`.

### banks.json

- Missing `upi` field in some banks:

  Can be fixed by:

  - marking `upi` field _not_required_ (not recommended as next solution works
  - marking `upi` field _nullable_ and ensuring that `null` will be used for
    banks with missing `upi` value (similar to other missing properties)

- Extraneous `imps` field in RBIN:

  Can be fixed by

  - removing `imps` field

### IFSC.json

- IFSC codes are represented either as a `number`, or as a `string`. Numbers
  seem to be used for ifsc codes that can be generated by prefixing bank code
  to zero-padded ifsc code. Strings are used for ifsc codes that can't be
  generated that way.

  Suggestion (trade-off, not a fix):

  - The `string|number` hybrid approach seems to be used to have compact json
    data. Having it done this way will require the consumers to pre-process it.
    This can be eliminated by using string ifsc codes exclusively, as most, if
    not all modern web servers support gzip compression. This can also allow
    zero-copy deserialization.

### by-bank.tar.gz

- Extraneous `upi` and `imps` fields in some banks:

  Can be fixed by:

  - removing those fields

- Incorrect value of `SBIN.json/SBIN0005181/CONTACT` (expected: nullable string,
  actual: number)

  Can be fixed by:

  - quoting the contact number