Financial data validation including currencies, bank account numbers, and routing information. These scalars provide validation for financial data commonly used in payment processing, banking, and e-commerce applications.
Validates ISO 4217 currency codes.
/**
* GraphQL scalar for ISO 4217 currency code validation
* Accepts 3-letter currency codes as defined by ISO 4217
*/
const GraphQLCurrency: GraphQLScalarType;Example Values:
"USD" (US Dollar)"EUR" (Euro)"GBP" (British Pound)"JPY" (Japanese Yen)"CAD" (Canadian Dollar)"AUD" (Australian Dollar)"CHF" (Swiss Franc)Validates US currency amounts and format.
/**
* GraphQL scalar for US currency validation
* Accepts US dollar amounts in various formats
*/
const GraphQLUSCurrency: GraphQLScalarType;Example Values:
"$10.50""$1,234.56""$0.99""$1000000.00"Validates International Bank Account Number format.
/**
* GraphQL scalar for IBAN validation
* Accepts International Bank Account Number with country-specific formatting
* Includes check digit validation
*/
const GraphQLIBAN: GraphQLScalarType;Example Values:
"GB82 WEST 1234 5698 7654 32" (UK)"DE89 3704 0044 0532 0130 00" (Germany)"FR14 2004 1010 0505 0001 3M02 606" (France)"IT60 X054 2811 1010 0000 0123 456" (Italy)Validates US bank routing numbers (ABA routing transit numbers).
/**
* GraphQL scalar for US bank routing number validation
* Accepts 9-digit ABA routing transit numbers with check digit validation
*/
const GraphQLRoutingNumber: GraphQLScalarType;Example Values:
"021000021" (Chase Bank)"026009593" (Bank of America)"111000025" (Wells Fargo)"122000247" (Citibank)Validates bank account numbers.
/**
* GraphQL scalar for bank account number validation
* Accepts various bank account number formats
*/
const GraphQLAccountNumber: GraphQLScalarType;Example Values:
"1234567890""0123456789""987654321012"import {
GraphQLCurrency,
GraphQLUSCurrency,
GraphQLIBAN,
GraphQLRoutingNumber,
GraphQLAccountNumber
} from "graphql-scalars";
// In a GraphQL schema
const PaymentMethodType = new GraphQLObjectType({
name: "PaymentMethod",
fields: {
currency: { type: GraphQLCurrency },
iban: { type: GraphQLIBAN },
routingNumber: { type: GraphQLRoutingNumber },
accountNumber: { type: GraphQLAccountNumber },
},
});
const TransactionType = new GraphQLObjectType({
name: "Transaction",
fields: {
amount: { type: GraphQLUSCurrency },
currency: { type: GraphQLCurrency },
fromAccount: { type: GraphQLAccountNumber },
toAccount: { type: GraphQLAccountNumber },
},
});
// Using with type definitions
const typeDefs = `
scalar Currency
scalar USCurrency
scalar IBAN
scalar RoutingNumber
scalar AccountNumber
type PaymentMethod {
id: ID!
type: PaymentMethodType
currency: Currency
iban: IBAN
routingNumber: RoutingNumber
accountNumber: AccountNumber
}
type Transaction {
id: ID!
amount: USCurrency
currency: Currency
fromAccount: AccountNumber
toAccount: AccountNumber
status: TransactionStatus
}
enum PaymentMethodType {
BANK_ACCOUNT
WIRE_TRANSFER
ACH
}
`;GraphQL Operations:
query GetPaymentMethods($userId: ID!) {
user(id: $userId) {
paymentMethods {
id
type
currency
iban
routingNumber
accountNumber
}
}
}
mutation CreateBankTransfer($input: BankTransferInput!) {
createBankTransfer(input: $input) {
id
amount
currency
fromAccount
toAccount
status
}
}Variables:
{
"userId": "user-123",
"input": {
"amount": "$1,250.00",
"currency": "USD",
"fromAccount": "1234567890",
"toAccount": "0987654321",
"routingNumber": "021000021"
}
}Each financial scalar performs specific validation:
Validation Examples:
// Valid financial data
const validPayment = {
amount: "$1,234.56", // Valid US currency format
currency: "USD", // Valid ISO 4217 code
iban: "GB82 WEST 1234 5698 7654 32", // Valid IBAN with check digits
routingNumber: "021000021", // Valid routing number
accountNumber: "1234567890" // Valid account number
};
// Invalid financial data
const invalidPayment = {
amount: "$1,234.567", // Invalid: too many decimal places
currency: "INVALID", // Invalid: not ISO 4217 code
iban: "GB99 WEST 1234 5698 7654 32", // Invalid: wrong check digits
routingNumber: "123456789", // Invalid: fails check digit validation
accountNumber: "123" // Invalid: too short
};When working with financial data, consider these security practices:
The IBAN scalar supports validation for all countries that use IBAN:
European Countries:
Other Regions:
Currency Codes are used for:
Bank Account Information is used for:
IBAN is used for:
// String constants for schema building
const Currency: string; // "scalar Currency"
const USCurrency: string; // "scalar USCurrency"
const IBAN: string; // "scalar IBAN"
const RoutingNumber: string; // "scalar RoutingNumber"
const AccountNumber: string; // "scalar AccountNumber"// Mock data generators for testing
const CurrencyMock: () => string;
const USCurrencyMock: () => string;
const IBANMock: () => string;
const RoutingNumberMock: () => string;
const AccountNumberMock: () => string;