pub struct Field71G {
pub currency: String,
pub amount: f64,
pub raw_amount: String,
}
Expand description
§Field 71G: Receiver’s Charges
§Overview
Field 71G specifies the charges borne by the receiver in SWIFT payment messages. This field contains the currency and amount of charges that the beneficiary or receiving institution pays for processing the payment transaction. These charges are deducted from the payment amount or billed separately, providing transparency in fee allocation and supporting accurate payment reconciliation and regulatory compliance requirements.
§Format Specification
Format: 3!a15d
- 3!a: Currency code (3 alphabetic characters, ISO 4217)
- 15d: Amount with up to 15 digits (including decimal places)
- Decimal separator: Comma (,) as per SWIFT standards
- Amount format: No thousands separators, up to 2 decimal places
§Structure
EUR12,75
│││└──┘
│││ └─ Amount (12.75)
└┴┴─── Currency (EUR)
§Field Components
- Currency Code: ISO 4217 three-letter currency code
- Must be valid and recognized currency
- Alphabetic characters only
- Case-insensitive but normalized to uppercase
- Charge Amount: Monetary amount of receiver’s charges
- Maximum 15 digits including decimal places
- Comma as decimal separator
- Non-negative values only
§Usage Context
Field 71G is used in:
- MT103: Single Customer Credit Transfer
- MT200: Financial Institution Transfer
- MT202: General Financial Institution Transfer
- MT202COV: Cover for customer credit transfer
- MT205: Financial Institution Transfer for its own account
§Business Applications
- Charge transparency: Detailed fee disclosure for receivers
- Payment reconciliation: Accurate net amount calculation
- Correspondent banking: Fee settlement with receiving banks
- Regulatory compliance: Charge reporting and disclosure
- Customer communication: Clear fee breakdown for beneficiaries
- Audit trails: Complete transaction cost documentation
§Examples
:71G:EUR12,75
└─── EUR 12.75 in receiver's charges
:71G:USD20,00
└─── USD 20.00 in beneficiary bank fees
:71G:GBP8,50
└─── GBP 8.50 in receiving charges
:71G:CHF15,25
└─── CHF 15.25 in processing fees
:71G:JPY1500,00
└─── JPY 1,500.00 in local charges
§Charge Types
- Receiving fees: Basic charges for incoming payments
- Processing charges: Fees for payment processing and crediting
- Correspondent fees: Charges from correspondent banking arrangements
- Regulatory fees: Compliance and reporting related charges
- Investigation fees: Charges for payment inquiries or research
- Account maintenance: Fees related to account services
§Currency Guidelines
- ISO 4217 compliance: Must use standard currency codes
- Local currency: Often in receiving country’s currency
- Payment currency: May match main payment currency
- Active currencies: Should use currently active currency codes
- Consistency: Should align with local banking practices
§Amount Calculation
- Deduction method: Typically deducted from payment amount
- Separate billing: May be billed separately to beneficiary
- Net amount: Payment amount minus receiver’s charges
- Currency conversion: May involve currency conversion costs
- Rate application: Applied at current exchange rates
§Validation Rules
- Currency format: Must be exactly 3 alphabetic characters
- Currency validity: Must be valid ISO 4217 currency code
- Amount format: Must follow SWIFT decimal format with comma
- Amount range: Must be non-negative
- Length limits: Total field length within SWIFT limits
- Character validation: Only allowed characters in amount
§Network Validated Rules (SWIFT Standards)
- Currency must be valid ISO 4217 code (Error: T52)
- Amount must be properly formatted (Error: T40)
- Amount cannot be negative (Error: T13)
- Decimal separator must be comma (Error: T41)
- Maximum 15 digits in amount (Error: T50)
- Currency must be alphabetic only (Error: T15)
- Field format must comply with specification (Error: T26)
Fields§
§currency: String
Currency code (3 letters, ISO 4217)
amount: f64
Charge amount
raw_amount: String
Raw amount string as received (preserves original formatting)
Implementations§
Source§impl Field71G
impl Field71G
Sourcepub fn new(currency: impl Into<String>, amount: f64) -> Result<Self, ParseError>
pub fn new(currency: impl Into<String>, amount: f64) -> Result<Self, ParseError>
Create a new Field71G with validation
Sourcepub fn from_raw(
currency: impl Into<String>,
raw_amount: impl Into<String>,
) -> Result<Self, ParseError>
pub fn from_raw( currency: impl Into<String>, raw_amount: impl Into<String>, ) -> Result<Self, ParseError>
Create from raw amount string
Sourcepub fn raw_amount(&self) -> &str
pub fn raw_amount(&self) -> &str
Get the raw amount string
Sourcepub fn format_amount(amount: f64) -> String
pub fn format_amount(amount: f64) -> String
Format amount for SWIFT output (with comma as decimal separator)
Sourcepub fn description(&self) -> String
pub fn description(&self) -> String
Get human-readable description