Classes Reference
The following classes are available globally.
BRAppearanceTheme
Customizes colors and icons in the SDK's stock scan UI (help sheet, onboarding, camera toolbar, and related surfaces).
Subclass BRAppearanceTheme and override colorForKey: and/or imageForKey: to supply your own values, then assign an instance to BRScanOptions.appearance before you start a scan. Both methods use an opt-in model: return nil for any key you don't want to customize and the SDK keeps its built-in value.
Declaration
@interface BRAppearanceTheme : NSObject
class BRAppearanceTheme : NSObject
Methods
colorForKey:
- (nullable UIColor *)colorForKey:(BRAppearanceColorKey)key;
func color(for key: BRAppearanceColorKey) -> UIColor?
Returns a color for the given key, or nil to keep the SDK default for that element. Override in your subclass.
imageForKey:
- (nullable UIImage *)imageForKey:(BRAppearanceIconKey)key;
func image(for key: BRAppearanceIconKey) -> UIImage?
Returns an image for the given key, or nil to keep the SDK default asset. Override in your subclass.
BRCameraViewController
Base camera controller class. Subclass to build your own UI on top of the fullscreen camera view.
Declaration
@interface BRCameraViewController : UIViewController
class BRCameraViewController : UIViewController
Properties
scanningRegion
@property (nonatomic) CGRect scanningRegion;
var scanningRegion: CGRect { get set }
Set this property of your subclass to scan only a certain region of the returned image from the camera. Parameters are specified as percentages of the view size.
Default: (0.0, 0.0, 1.0, 1.0) (full frame)
isTorchOn (read-only)
@property (nonatomic, readonly) BOOL isTorchOn;
var isTorchOn: Bool { get }
Indicates whether the torch is currently active.
isPaused (read-only)
@property (nonatomic, readonly) BOOL isPaused;
var isPaused: Bool { get }
Indicates whether scanning is paused.
isEdgeDetectionRunning (read-only)
@property (nonatomic, readonly) BOOL isEdgeDetectionRunning;
var isEdgeDetectionRunning: Bool { get }
Indicates whether edge detection is running.
manualCaptureSession
@property (nonatomic) BOOL manualCaptureSession;
var manualCaptureSession: Bool { get set }
Set to YES to prevent the parent view controller from starting and stopping the AVCaptureSession. Use this when you manage the capture session lifecycle yourself.
Default: NO
blinkReceiptId (read-only)
@property (nonatomic, strong, readonly) NSString *blinkReceiptId;
var blinkReceiptId: String! { get }
Unique identifier for the current receipt scan session.
Methods
userSnappedPhotoOnReady:
- (void)userSnappedPhotoOnReady:(void (^)(UIImage *, BRFrameAttributes *))readyBlock;
func userSnappedPhoto(onReady readyBlock: ((UIImage?, BRFrameAttributes?) -> Void)!)
Notifies the camera controller the user attempted to snap a picture. The ready block is invoked once a suitable frame is obtained.
userFinishedScan
- (void)userFinishedScan;
func userFinishedScan()
Notifies the controller that scanning is complete. Triggers cleanup and fires the delegate callback with final results.
getPreliminaryResults:
- (void)getPreliminaryResults:(BOOL (^)(BRScanResults *))callback;
func getPreliminaryResults(_ callback: ((BRScanResults?) -> Bool)!)
Invokes the same processing pipeline as end-of-scan. The callback returns YES if the results are satisfactory, NO to continue scanning.
userCancelledScan
- (void)userCancelledScan;
func userCancelledScan()
Notifies the controller the user cancelled scanning. Performs cleanup and fires the cancelled delegate callback.
userConfirmedFrame:
- (void)userConfirmedFrame:(UIImage *)frameImg;
func userConfirmedFrame(_ frameImg: UIImage!)
Marks a frame as user-confirmed for remote saving and local storage per the active BRScanOptions.
setTorch:
- (void)setTorch:(BOOL)torchOn;
func setTorch(_ torchOn: Bool)
Toggles the torch on or off.
pauseScanning
- (void)pauseScanning;
func pauseScanning()
Pauses frame capture and scanning. Frames already in the processing pipeline are still handled.
resumeScanning
- (void)resumeScanning;
func resumeScanning()
Resumes frame capture and scanning after a pause.
confirmCorrectRetailer:
- (void)confirmCorrectRetailer:(WFRetailerId)retailerId;
func confirmCorrectRetailer(_ retailerId: WFRetailerId)
After wrong-retailer detection, call this with the corrected retailer ID to allow scanning to continue.
Overridable Methods
Override these in your subclass to receive scan-time callbacks.
userDistanceChanged:
- (void)userDistanceChanged:(BRDistanceStatus)newStatus;
func userDistanceChanged(_ newStatus: BRDistanceStatus)
Called when the user's distance from the receipt changes (too far vs. acceptable).
didGetFrameStats:
- (void)didGetFrameStats:(NSDictionary *)frameStats;
func didGetFrameStats(_ frameStats: [AnyHashable : Any]!)
Called per frame with statistics including content width, edges rect, and receipt detection.
didDetectWrongRetailer:withConfidence:
- (void)didDetectWrongRetailer:(WFRetailerId)correctRetailer withConfidence:(BRWrongRetailerConfidence)confidence;
func didDetectWrongRetailer(_ correctRetailer: WFRetailerId, with confidence: BRWrongRetailerConfidence)
Called when the SDK detects the scanned receipt belongs to a different retailer than specified.
didGetFrameResults:
- (void)didGetFrameResults:(BRScanResults *)frameResults;
func didGetFrameResults(_ frameResults: BRScanResults!)
Called per frame with cumulative metadata results as they are parsed.
receiptValidityEstimate:
- (void)receiptValidityEstimate:(BOOL)validReceipt;
func receiptValidityEstimate(_ validReceipt: Bool)
Called per frame with a running estimate of whether the frame appears to be a valid receipt.
didGetLightingCondition:
- (void)didGetLightingCondition:(BRLightingCondition)lightingCondition;
func didGet(_ lightingCondition: BRLightingCondition)
Called with lighting condition updates when manual torch control is enabled.
didGetHorizontalEdges:andBottomEdge:
- (void)didGetHorizontalEdges:(BOOL)topEdge andBottomEdge:(BOOL)bottomEdge;
func didGetHorizontalEdges(_ topEdge: Bool, andBottomEdge bottomEdge: Bool)
Called when horizontal edges are detected on the current frame.
BRCoupon
Describes one coupon or discount detected on a receipt.
Declaration
@interface BRCoupon : NSObject <BRSerializable>
class BRCoupon : NSObject, BRSerializable
Properties
couponType (read-only)
@property (nonatomic, readonly) BRCouponType couponType;
var couponType: BRCouponType { get }
The type of coupon.
couponAmount (read-only)
@property (nonatomic, strong, readonly) BRFloatValue *couponAmount;
var couponAmount: BRFloatValue! { get }
The monetary amount of the coupon or discount.
couponDesc (read-only)
@property (nonatomic, strong, readonly) BRStringValue *couponDesc;
var couponDesc: BRStringValue! { get }
Coupon description text.
couponSku (read-only)
@property (nonatomic, strong, readonly) BRStringValue *couponSku;
var couponSku: BRStringValue! { get }
Coupon SKU.
couponDescPrefix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *couponDescPrefix;
var couponDescPrefix: BRStringValue! { get }
Text found before the coupon description on the receipt, if any.
couponDescPostfix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *couponDescPostfix;
var couponDescPostfix: BRStringValue! { get }
Text found after the coupon description on the receipt, if any.
couponSkuPrefix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *couponSkuPrefix;
var couponSkuPrefix: BRStringValue! { get }
Text found before the coupon SKU on the receipt, if any.
couponSkuPostfix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *couponSkuPostfix;
var couponSkuPostfix: BRStringValue! { get }
Text found after the coupon SKU on the receipt, if any.
relatedProductIndex (read-only)
@property (nonatomic, readonly) NSInteger relatedProductIndex;
var relatedProductIndex: Int { get }
Index of the related product in BRScanResults.products, if applicable.
Default: -1 (no related product)
BRFrameAttributes
Attributes of a single camera frame evaluated during scanning.
Declaration
@interface BRFrameAttributes : NSObject
class BRFrameAttributes : NSObject
Properties
isBlurry (read-only)
@property (nonatomic, readonly) BOOL isBlurry;
var isBlurry: Bool { get }
Indicates whether the frame has blur quality issues.
isReceipt (read-only)
@property (nonatomic, readonly) BOOL isReceipt;
var isReceipt: Bool { get }
Indicates whether the frame appears to be an image of a receipt.
isScreen (read-only)
@property (nonatomic, readonly) BOOL isScreen;
var isScreen: Bool { get }
Indicates whether the frame appears to be a photograph of a screen display.
BRMissedEarningsBaseViewController
Base view controller for the Missed Earnings barcode scanning UI. Subclass to receive barcode detection and UPC lookup callbacks.
Declaration
@interface BRMissedEarningsBaseViewController : UIViewController
class BRMissedEarningsBaseViewController : UIViewController
Properties
scanningRegion
@property (nonatomic) CGRect scanningRegion;
var scanningRegion: CGRect { get set }
Restricts the region in which a barcode will be detected. Parameters are specified as percentages of the view size.
Default: (0.0, 0.0, 1.0, 1.0) (full frame)
countryCode
@property (nonatomic, strong, nonnull) NSString *countryCode;
var countryCode: String { get set }
ISO 2-character country code. Due to differences in barcode lengths, specifying the country code helps the SDK determine the correct barcode length to detect.
Methods
didDetectBarcode:
- (void)didDetectBarcode:(nonnull NSString *)barcode;
func didDetectBarcode(_ barcode: String)
Override this method to be notified when a barcode is detected. Supports 12-digit and 6-digit UPCs.
lookupUPC:withCompletion:
- (void)lookupUPC:(nonnull NSString *)upc
withCompletion:(nonnull void (^)(BRMissedEarningsLookupResult, NSDictionary *_Nonnull))completion;
func lookupUPC(_ upc: String) async -> (BRMissedEarningsLookupResult, [AnyHashable : Any])
Performs a server lookup for a UPC code.
Parameters
| Parameter | Description |
|---|---|
upc | The UPC string to look up. |
completion | Called when the lookup completes. Receives a BRMissedEarningsLookupResult and a product info dictionary with keys: productName, brand, image_url, brand_participates (Bool), message. |
setTorch:
- (void)setTorch:(BOOL)torchOn;
func setTorch(_ torchOn: Bool)
Toggles the torch on or off.
restartCaptureSession
- (void)restartCaptureSession;
func restartCaptureSession()
When a barcode is found, the capture session is automatically paused. Call this to resume scanning.
BRPaymentMethod
Describes a payment method and the amount charged to it on a receipt.
Declaration
@interface BRPaymentMethod : NSObject <BRSerializable>
class BRPaymentMethod : NSObject, BRSerializable
Properties
method (read-only)
@property (nonatomic, strong, readonly) BRStringValue *method;
var method: BRStringValue! { get }
Payment method type (e.g., Cash, Credit, Debit, Gift Card, Check).
cardType (read-only)
@property (nonatomic, strong, readonly) BRStringValue *cardType;
var cardType: BRStringValue! { get }
Card brand (e.g., Visa, American Express, Mastercard, Discover).
cardIssuer (read-only)
@property (nonatomic, strong, readonly) BRStringValue *cardIssuer;
var cardIssuer: BRStringValue! { get }
Card issuer organization (e.g., Target, Walmart).
amount (read-only)
@property (nonatomic, strong, readonly) BRFloatValue *amount;
var amount: BRFloatValue! { get }
Monetary value charged against this payment method.
BRProduct
Describes one product detected on a receipt.
Declaration
@interface BRProduct : NSObject <BRSerializable>
class BRProduct : NSObject, BRSerializable
Receipt Properties
productNumber (read-only)
@property (nonatomic, strong, readonly) BRStringValue *productNumber;
var productNumber: BRStringValue! { get }
The product number (SKU, UPC, or other identifier) found on the receipt.
productDescription (read-only)
@property (nonatomic, strong, readonly) BRStringValue *productDescription;
var productDescription: BRStringValue! { get }
The product description found on the receipt, if any.
quantity (read-only)
@property (nonatomic, strong, readonly) BRFloatValue *quantity;
var quantity: BRFloatValue! { get }
Product quantity found on the receipt — either a count of items or a weight amount.
unitPrice (read-only)
@property (nonatomic, strong, readonly) BRFloatValue *unitPrice;
var unitPrice: BRFloatValue! { get }
Unit price (e.g., 8.0 for $8/lb).
unitOfMeasure (read-only)
@property (nonatomic, strong, readonly) BRStringValue *unitOfMeasure;
var unitOfMeasure: BRStringValue! { get }
Unit of measure (e.g., pounds, ounces, packs).
totalPrice (read-only)
@property (nonatomic, strong, readonly) BRFloatValue *totalPrice;
var totalPrice: BRFloatValue! { get }
Total price after accounting for quantities, weights, and discounts.
fullPrice (read-only)
@property (nonatomic, strong, readonly) BRFloatValue *fullPrice;
var fullPrice: BRFloatValue! { get }
Price before any savings were applied. The discount amount is fullPrice - totalPrice.
priceAfterCoupons (read-only)
@property (strong, nonatomic, readonly) BRFloatValue *priceAfterCoupons;
var priceAfterCoupons: BRFloatValue! { get }
Price after coupon application.
additionalLines (read-only)
@property (nonatomic, strong, readonly) NSArray<BRProductAdditionalLine *> *additionalLines;
var additionalLines: [BRProductAdditionalLine]! { get }
Additional lines of text found on the receipt immediately above or below this product.
isVoided (read-only)
@property (nonatomic, readonly) BOOL isVoided;
var isVoided: Bool { get }
Indicates whether the product was voided on the receipt.
shippingStatus (read-only)
@property (nonatomic, strong, readonly) NSString *shippingStatus;
var shippingStatus: String! { get }
For e-receipts, the shipping status of this product.
prodDescPrefix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *prodDescPrefix;
var prodDescPrefix: BRStringValue! { get }
Text found before the product description on the receipt.
prodDescPostfix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *prodDescPostfix;
var prodDescPostfix: BRStringValue! { get }
Text found after the product description on the receipt.
prodNumPrefix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *prodNumPrefix;
var prodNumPrefix: BRStringValue! { get }
Text found before the product number on the receipt.
prodNumPostfix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *prodNumPostfix;
var prodNumPostfix: BRStringValue! { get }
Text found after the product number on the receipt.
pricePostfix (read-only)
@property (nonatomic, strong, readonly) BRStringValue *pricePostfix;
var pricePostfix: BRStringValue! { get }
Text found after the price on the receipt.
fuelType (read-only)
@property (nonatomic, strong, readonly) NSString *fuelType;
var fuelType: String! { get }
Type of fuel if the product is a fuel purchase (e.g., "Regular", "Unleaded").
seller (read-only)
@property (nonatomic, strong, readonly) NSString *seller;
var seller: String! { get }
Product reseller, if any.
condition (read-only)
@property (nonatomic, strong, readonly) NSString *condition;
var condition: String! { get }
Product condition (e.g., "New", "Used").
productUrl (read-only)
@property (nonatomic, strong, readonly) NSString *productUrl;
var productUrl: String! { get }
Product URL. Typically populated from e-receipts.
currencyCode (read-only)
@property (nonatomic, strong, readonly) NSString *currencyCode;
var currencyCode: String! { get }
Currency code for this product. May differ from the receipt-level currency.
subscriptionFrequency (read-only)
@property (nonatomic, strong, readonly) NSString *subscriptionFrequency;
var subscriptionFrequency: String! { get }
Subscription frequency for recurring products (e.g., "every week", "every month").
extendedFields (read-only)
@property (nonatomic, strong, readonly) NSDictionary *extendedFields;
var extendedFields: [AnyHashable : Any]! { get }
Additional product fields not captured by standard properties.
userAdded (read-only)
@property (nonatomic, readonly) BOOL userAdded;
var userAdded: Bool { get }
Indicates whether the user manually added this product during a correction flow.
userModified (read-only)
@property (nonatomic, readonly) BOOL userModified;
var userModified: Bool { get }
Indicates whether the user modified this product during a correction flow.
isSensitive (read-only)
@property (nonatomic, readonly) BOOL isSensitive;
var isSensitive: Bool { get }
When filterSensitiveData is enabled on BRScanOptions, indicates this product belongs to a sensitive category.
Product Intelligence Properties
These properties are populated when a Product Intelligence key is configured. Without a valid key, they return nil or empty values.
productName (read-only)
@property (nonatomic, strong, readonly) NSString *productName;
var productName: String! { get }
The full enriched product name (e.g., "Pepperidge Farm Goldfish Cheddar Crackers, 6.6 oz").
brand (read-only)
@property (nonatomic, strong, readonly) NSString *brand;
var brand: String! { get }
The product brand.
upc (read-only)
@property (nonatomic, strong, readonly) NSString *upc;
var upc: String! { get }
The product UPC.
sector (read-only)
@property (nonatomic, strong, readonly) NSString *sector;
var sector: String! { get }
Highest level of the product taxonomy.
department (read-only)
@property (nonatomic, strong, readonly) NSString *department;
var department: String! { get }
The product department.
majorCategory (read-only)
@property (nonatomic, strong, readonly) NSString *majorCategory;
var majorCategory: String! { get }
The product major category.
subCategory (read-only)
@property (nonatomic, strong, readonly) NSString *subCategory;
var subCategory: String! { get }
The product sub-category.
size (read-only)
@property (nonatomic, strong, readonly) NSString *size;
var size: String! { get }
The product size.
itemType (read-only)
@property (nonatomic, strong, readonly) NSString *itemType;
var itemType: String! { get }
The product item type.
imgUrl (read-only)
@property (nonatomic, strong, readonly) NSString *imgUrl;
var imgUrl: String! { get }
Product thumbnail URL. Image size may vary.
attributes (read-only)
@property (nonatomic, strong, readonly) NSArray<NSDictionary *> *attributes;
var attributes: [[AnyHashable : Any]]! { get }
Product attributes as an array of single-key-value dictionaries.
probability (read-only)
@property (nonatomic, readonly) float probability;
var probability: Float { get }
Likelihood estimate used when this product is an entry in a possibleProducts array.
possibleProducts (read-only)
@property (nonatomic, strong, readonly) NSArray<BRProduct *> *possibleProducts;
var possibleProducts: [BRProduct]! { get }
Alternative product matches when an exact match is unavailable.
subProducts (read-only)
@property (nonatomic, strong, readonly) NSArray<BRProduct *> *subProducts;
var subProducts: [BRProduct]! { get }
Sub-products tied to this product (typically used for restaurant receipts where items like "Guacamole" are nested under "Burrito").
category (read-only)
@property (nonatomic, strong, readonly) NSString *category;
var category: String! { get }
Legacy flat category string. Prefer sector, department, majorCategory, and subCategory for new integrations.
BRProductAdditionalLine
Represents an additional line of text attached to a product entry on the receipt.
Declaration
@interface BRProductAdditionalLine : NSObject <BRSerializable>
class BRProductAdditionalLine : NSObject, BRSerializable
Properties
type (read-only)
@property (nonatomic, strong, readonly) BRStringValue *type;
var type: BRStringValue! { get }
The type of this additional line (e.g., "Full Price", "Price Cut", "Quantity").
text (read-only)
@property (nonatomic, strong, readonly) BRStringValue *text;
var text: BRStringValue! { get }
The text content of this additional line.
lineNumber (read-only)
@property (nonatomic, readonly) NSInteger lineNumber;
var lineNumber: Int { get }
The line number of this additional line relative to the product.
BRPromotion
Represents a promotion identified against the receipt, either validated or not.
Declaration
@interface BRPromotion : NSObject <BRSerializable>
class BRPromotion : NSObject, BRSerializable
Properties
slug (read-only)
@property (nonatomic, strong, readonly) NSString *slug;
var slug: String! { get }
Identifies which promotion was evaluated.
rewardValue (read-only)
@property (nonatomic, readonly) float rewardValue;
var rewardValue: Float { get }
The reward value for this promotion.
rewardCurrency (read-only)
@property (nonatomic, strong, readonly) NSString *rewardCurrency;
var rewardCurrency: String! { get }
The reward currency for this promotion.
errorCode (read-only)
@property (nonatomic, readonly) NSInteger errorCode;
var errorCode: Int { get }
Error code when the promotion did not qualify. 0 indicates no error.
errorMessage (read-only)
@property (nonatomic, strong, readonly) NSString *errorMessage;
var errorMessage: String! { get }
Human-readable error message when the promotion did not qualify.
relatedProductIndexes (read-only)
@property (nonatomic, strong, readonly) NSArray<NSNumber *> *relatedProductIndexes;
var relatedProductIndexes: [NSNumber]! { get }
Indexes of products in BRScanResults.products that caused this promotion to qualify.
qualifications (read-only)
@property (nonatomic, strong, readonly) NSArray<BRPromotionQualification> *qualifications;
var qualifications: [[NSNumber]]! { get }
Array of qualification instances, each containing product indexes from BRScanResults.products that satisfied one qualification requirement.
qualifiedProductLists (read-only)
@property (nonatomic, strong, readonly) NSArray<BRQualifiedProduct *> *qualifiedProductLists;
var qualifiedProductLists: [BRQualifiedProduct]! { get }
Array of qualified products with their indexes and product group memberships.
BRPromotionInfo
Represents information about a promotion retrieved for the current user.
Declaration
@interface BRPromotionInfo : NSObject <BRSerializable>
class BRPromotionInfo : NSObject, BRSerializable
Properties
slug (read-only)
@property (nonatomic, strong, readonly, nonnull) NSString *slug;
var slug: String { get }
The promotion slug from the PVP dashboard.
targeted (read-only)
@property (nonatomic, readonly) BOOL targeted;
var targeted: Bool { get }
Whether this promotion is targeted to this specific user.
BRQualifiedProduct
A product that satisfied a promotion qualification requirement.
Declaration
@interface BRQualifiedProduct : NSObject <BRSerializable>
class BRQualifiedProduct : NSObject, BRSerializable
Properties
productIndex (read-only)
@property (nonatomic, readonly) NSInteger productIndex;
var productIndex: Int { get }
Index position of this product in BRScanResults.products.
productGroups (read-only)
@property (strong, nonatomic, readonly) NSArray<NSString *> *productGroups;
var productGroups: [String] { get }
String identifiers categorizing this product into one or more promotion groups.
BRScanManager
The main interface for initiating scanning sessions. Access via BRScanManager.shared().
Declaration
@interface BRScanManager : NSObject
class BRScanManager : NSObject
Properties
licenseKey
@property (nonatomic, strong, nonnull) NSString *licenseKey;
var licenseKey: String { get set }
Your BlinkReceipt license key. Set this before starting any scan session.
prodIntelKey
@property (nonatomic, strong, nullable) NSString *prodIntelKey;
var prodIntelKey: String? { get set }
Your BlinkReceipt Product Intelligence key. Required for enriched product data (full product names, brands, categories, UPCs).
Default: nil
clientUserId
@property (nonatomic, strong, nullable) NSString *clientUserId;
var clientUserId: String? { get set }
A client-specified identifier for the current user. Used to correlate scan data with your own user records.
Default: nil
googlePlacesApiKey
@property (nonatomic, strong, nullable) NSString *googlePlacesApiKey;
var googlePlacesApiKey: String? { get set }
Google Places Web Service API Key for store location enrichment.
Default: nil
yelpApiKey
@property (nonatomic, strong, nullable) NSString *yelpApiKey;
var yelpApiKey: String? { get set }
Yelp API Key for store information enrichment.
Default: nil
userFramesFilepaths
@property (nonatomic, strong, nullable) NSArray<NSString *> *userFramesFilepaths;
var userFramesFilepaths: [String]? { get set }
Array of file paths to user-confirmed images from the previous scan session, available for upload or further processing.
Default: nil
daysToStoreReceiptData
@property (nonatomic) NSInteger daysToStoreReceiptData;
var daysToStoreReceiptData: Int { get set }
Controls how many days receipt data is retained in local storage for historical correction and editing. Set to 0 to disable local storage.
Default: 0
deviceCanProcessVideo (read-only)
@property (nonatomic, readonly) BOOL deviceCanProcessVideo;
var deviceCanProcessVideo: Bool { get }
Indicates whether the current device is capable of processing video frames for scanning.
BRScanOptions
Configures the behavior of a scan session. Create one instance, set the properties you need, and pass it to BRScanManager.shared().startStaticCamera(...).
Declaration
@interface BRScanOptions : NSObject
class BRScanOptions : NSObject
Properties
retailerId
@property (nonatomic) WFRetailerId retailerId;
var retailerId: WFRetailerId { get set }
If the retailer is known in advance, pass the appropriate value from the WFRetailerId enum to improve recognition accuracy.
enableBlinkEngage
@property (nonatomic) BOOL enableBlinkEngage;
var enableBlinkEngage: Bool { get set }
Activates the BlinkEngage monetization flow for this scan session. When YES, BlinkEngage intercepts scan results and handles the post-scan screen. The didFinishScanning:withScanResults: delegate callback still fires but scanResults is always nil. See BlinkEngage Integration.
Default: NO
appearance
@property (nonatomic, strong, nullable) BRAppearanceTheme *appearance;
var appearance: BRAppearanceTheme? { get set }
Optional styling via a BRAppearanceTheme subclass. Assign before starting the scan.
Default: nil (SDK defaults)
detectDuplicates
@property (nonatomic) BOOL detectDuplicates;
var detectDuplicates: Bool { get set }
When YES, the SDK checks whether the receipt has been scanned before and sets BRScanResults.isDuplicate and isFraudulent accordingly.
Default: NO
validatePromotions
@property (nonatomic) BOOL validatePromotions;
var validatePromotions: Bool { get set }
When YES, the SDK attempts to validate scan results against configured promotions.
Default: NO
promotionSlugs
@property (nonatomic, strong) NSArray *promotionSlugs;
var promotionSlugs: [Any]! { get set }
One or more promotion slugs to validate against when validatePromotions is YES.
returnRawText
@property (nonatomic) BOOL returnRawText;
var returnRawText: Bool { get set }
When YES, returns the raw OCR text in scan results.
Default: NO
returnVoidedProducts
@property (nonatomic) BOOL returnVoidedProducts;
var returnVoidedProducts: Bool { get set }
When YES, voided products are included in results with BRProduct.isVoided set to YES.
Default: NO
returnSubproducts
@property (nonatomic) BOOL returnSubproducts;
var returnSubproducts: Bool { get set }
When YES, sub-products are returned nested within their parent product's subProducts array.
Default: NO
storeUserFrames
@property (nonatomic) BOOL storeUserFrames;
var storeUserFrames: Bool { get set }
When YES, user-confirmed frames are written to disk. File paths are available via BRScanManager.shared().userFramesFilepaths.
Default: NO
countryCode
@property (nonatomic, strong) NSString *countryCode;
var countryCode: String! { get set }
ISO 2-character country code for the receipts being scanned.
Default: nil (auto-detected)
detectLogo
@property (nonatomic) BOOL detectLogo;
var detectLogo: Bool { get set }
When YES, the SDK attempts to detect the merchant logo on the receipt.
Default: YES
detectWrongRetailer
@property (nonatomic) BOOL detectWrongRetailer;
var detectWrongRetailer: Bool { get set }
When YES, the SDK verifies the user is scanning a receipt from the retailer specified in retailerId.
Default: NO
debugMode
@property (nonatomic) BOOL debugMode;
var debugMode: Bool { get set }
When YES, all parsed frames are stored for inclusion in a debug email.
Default: NO
jpegCompressionQuality
@property (nonatomic) float jpegCompressionQuality;
var jpegCompressionQuality: Float { get set }
JPEG compression quality factor for frame images passed to UIImageJPEGRepresentation.
Default: 0.9
tooFarThreshold
@property (nonatomic) NSInteger tooFarThreshold;
var tooFarThreshold: Int { get set }
Controls when the "Move Closer" guidance appears. Value is a percentage (1–99) of the frame width the receipt content must occupy before the message clears.
Default: 80
edgesEveryNthFrame
@property (nonatomic) NSInteger edgesEveryNthFrame;
var edgesEveryNthFrame: Int { get set }
How often edge detection runs, expressed as a frame interval. Must be an even integer between 2 and 30.
Default: 6
detectDistanceWithEdges
@property (nonatomic) BOOL detectDistanceWithEdges;
var detectDistanceWithEdges: Bool { get set }
When YES, distance from the receipt is determined via edge detection.
Default: NO
numGoodFramesToStopEdges
@property (nonatomic) NSInteger numGoodFramesToStopEdges;
var numGoodFramesToStopEdges: Int { get set }
Number of consecutive frames above the threshold before edge detection stops.
Default: 2
restartEdgesAfterUserConfirm
@property (nonatomic) BOOL restartEdgesAfterUserConfirm;
var restartEdgesAfterUserConfirm: Bool { get set }
When YES, edge detection restarts after the user confirms a frame.
Default: NO
enableEdgesAfterUserPhoto
@property (nonatomic) BOOL enableEdgesAfterUserPhoto;
var enableEdgesAfterUserPhoto: Bool { get set }
When YES, edge detection continues after the user manually snaps a photo.
Default: NO
beginEdgesImmediately
@property (nonatomic) BOOL beginEdgesImmediately;
var beginEdgesImmediately: Bool { get set }
When YES, edge detection begins immediately at session start rather than waiting for a confident frame.
Default: NO
previousFrameOverlap
@property (nonatomic) NSInteger previousFrameOverlap;
var previousFrameOverlap: Int { get set }
Number of pixels from the previous frame to show as an overlap guide when the user adds a new frame.
Default: 72
enableDateChip
@property (nonatomic) BOOL enableDateChip;
var enableDateChip: Bool { get set }
When YES, a date chip is shown after receipt recognition completes.
Default: NO
enableTotalChip
@property (nonatomic) BOOL enableTotalChip;
var enableTotalChip: Bool { get set }
When YES, a total chip is shown after receipt recognition completes.
Default: NO
enableMerchantChip
@property (nonatomic) BOOL enableMerchantChip;
var enableMerchantChip: Bool { get set }
When YES, a merchant chip is shown after receipt recognition completes.
Default: NO
enableDynamicTextSizing
@property (nonatomic) BOOL enableDynamicTextSizing;
var enableDynamicTextSizing: Bool { get set }
When YES, the scan UI adjusts its layout based on the user's preferred text size.
Default: NO
manualTorchControl
@property (nonatomic) BOOL manualTorchControl;
var manualTorchControl: Bool { get set }
When YES, torch control is managed by the client (for custom BRCameraViewController subclasses only).
Default: NO
disableOnDeviceProcessing
@property (nonatomic) BOOL disableOnDeviceProcessing;
var disableOnDeviceProcessing: Bool { get set }
When YES, the SDK does not perform on-device frame processing. Use for server-side processing workflows.
Default: NO
clientUsesScanditCamera
@property (nonatomic) BOOL clientUsesScanditCamera;
var clientUsesScanditCamera: Bool { get set }
Set to YES if the client uses a Scandit camera independently.
Default: NO
BRScanResults
Holds the scan results for a completed scanning session.
Declaration
@interface BRScanResults : NSObject <BRSerializable>
class BRScanResults : NSObject, BRSerializable
Merchant & Store
retailerId (read-only)
@property (nonatomic, readonly) WFRetailerId retailerId;
var retailerId: WFRetailerId { get }
The detected retailer ID. For future auto-detect retailer functionality.
merchantName (read-only)
@property (nonatomic, strong, readonly) BRStringValue *merchantName;
var merchantName: BRStringValue! { get }
The store name detected on the receipt, if any.
clientMerchantName (read-only)
@property (nonatomic, strong, readonly) BRStringValue *clientMerchantName;
var clientMerchantName: BRStringValue! { get }
Client-specific merchant name passed back when available.
merchantGuess (read-only)
@property (nonatomic, strong, readonly) NSString *merchantGuess;
var merchantGuess: String! { get }
Best guess for the merchant based on receipt heuristics.
merchantSources (read-only)
@property (nonatomic, strong, readonly) NSArray<NSNumber *> *merchantSources;
var merchantSources: [NSNumber]! { get }
Array of NSNumber values wrapping BRMerchantSource enum values, indicating what sources were used to identify the merchant.
storeNumber (read-only)
@property (nonatomic, strong, readonly) BRStringValue *storeNumber;
var storeNumber: BRStringValue! { get }
The store number detected on the receipt, if any.
storeAddress (read-only)
@property (nonatomic, strong, readonly) BRStringValue *storeAddress;
var storeAddress: BRStringValue! { get }
The store street address detected on the receipt, if any.
storeCity (read-only)
@property (nonatomic, strong, readonly) BRStringValue *storeCity;
var storeCity: BRStringValue! { get }
The store city detected on the receipt, if any.
storeState (read-only)
@property (nonatomic, strong, readonly) BRStringValue *storeState;
var storeState: BRStringValue! { get }
The store state detected on the receipt, if any.
storeZip (read-only)
@property (nonatomic, strong, readonly) BRStringValue *storeZip;
var storeZip: BRStringValue! { get }
The store zip code detected on the receipt, if any.
storePhone (read-only)
@property (nonatomic, strong, readonly) BRStringValue *storePhone;
var storePhone: BRStringValue! { get }
The store phone number detected on the receipt, if any.
mallName (read-only)
@property (nonatomic, strong, readonly) BRStringValue *mallName;
var mallName: BRStringValue! { get }
The name of the mall in which the retailer is located, if any.
channel (read-only)
@property (nonatomic, strong, readonly) BRStringValue *channel;
var channel: BRStringValue! { get }
The retail channel for this receipt, if any.
Transaction
blinkReceiptId (read-only)
@property (nonatomic, strong, readonly) NSString *blinkReceiptId;
var blinkReceiptId: String! { get }
Unique identifier generated by BlinkReceipt that links scan data to the receipt image(s).
barcode (read-only)
@property (nonatomic, strong, readonly) NSString *barcode;
var barcode: String! { get }
Barcode detected on the receipt. Supported formats: Code 39, Code 128, ITF.
transactionId (read-only)
@property (nonatomic, strong, readonly) BRStringValue *transactionId;
var transactionId: BRStringValue! { get }
Transaction ID detected on the receipt, if any.
longTransactionId (read-only)
@property (nonatomic, strong, readonly) BRStringValue *longTransactionId;
var longTransactionId: BRStringValue! { get }
Longer transaction number in addition to the standard transaction ID, if any.
registerId (read-only)
@property (nonatomic, strong, readonly) BRStringValue *registerId;
var registerId: BRStringValue! { get }
The register ID detected on the receipt, if any.
cashierId (read-only)
@property (nonatomic, strong, readonly) BRStringValue *cashierId;
var cashierId: BRStringValue! { get }
The cashier ID detected on the receipt, if any.
currencyCode (read-only)
@property (nonatomic, strong, readonly) NSString *currencyCode;
var currencyCode: String! { get }
The currency identifier for this receipt, if identified.
purchaseType (read-only)
@property (nonatomic, strong, readonly) NSString *purchaseType;
var purchaseType: String! { get }
Represents the type of purchase (e.g., in-store, online).
taxId (read-only)
@property (nonatomic, strong, readonly) BRStringValue *taxId;
var taxId: BRStringValue! { get }
The tax ID of the retailer, if any.
Purchase Date & Time
receiptDate (read-only)
@property (nonatomic, strong, readonly) BRStringValue *receiptDate;
var receiptDate: BRStringValue! { get }
The purchase date formatted as MM/dd/yyyy, if any.
receiptTime (read-only)
@property (nonatomic, strong, readonly) BRStringValue *receiptTime;
var receiptTime: BRStringValue! { get }
The purchase time formatted as HH:mm, if any.
receiptTimeSeconds (read-only)
@property (nonatomic, strong, readonly) BRStringValue *receiptTimeSeconds;
var receiptTimeSeconds: BRStringValue! { get }
The seconds component of the purchase time formatted as SS, if any.
Totals
total (read-only)
@property (nonatomic, strong, readonly) BRFloatValue *total;
var total: BRFloatValue! { get }
The total detected on the receipt, if any.
subtotal (read-only)
@property (nonatomic, readonly) BRFloatValue *subtotal;
var subtotal: BRFloatValue! { get }
The subtotal detected on the receipt, if any.
taxes (read-only)
@property (nonatomic, readonly) BRFloatValue *taxes;
var taxes: BRFloatValue! { get }
Tax amount detected on the receipt, if any.
tip (read-only)
@property (nonatomic, readonly) BRFloatValue *tip;
var tip: BRFloatValue! { get }
Tip amount detected on the receipt, if any.
cashback (read-only)
@property (nonatomic, readonly) float cashback;
var cashback: Float { get }
Cashback amount detected on the receipt.
Products & Items
products (read-only)
@property (nonatomic, strong, readonly) NSArray<BRProduct *> *products;
var products: [BRProduct]! { get }
Array of BRProduct objects detected on the receipt.
coupons (read-only)
@property (nonatomic, strong, readonly) NSArray<BRCoupon *> *coupons;
var coupons: [BRCoupon]! { get }
Array of BRCoupon objects detected on the receipt.
shipments (read-only)
@property (nonatomic, strong, readonly) NSArray<BRShipment *> *shipments;
var shipments: [BRShipment]! { get }
Array of BRShipment objects representing all discovered shipments in an order.
Payment
paymentMethods (read-only)
@property (nonatomic, strong, readonly) NSArray<BRPaymentMethod *> *paymentMethods;
var paymentMethods: [BRPaymentMethod]! { get }
Array of BRPaymentMethod objects found on the receipt.
last4CC (read-only)
@property (nonatomic, strong, readonly) BRStringValue *last4CC;
var last4CC: BRStringValue! { get }
The last 4 digits of the credit card used, if any.
authCode (read-only)
@property (nonatomic, strong, readonly) BRStringValue *authCode;
var authCode: BRStringValue! { get }
The payment authorization code, if any.
aid (read-only)
@property (nonatomic, strong, readonly) BRStringValue *aid;
var aid: BRStringValue! { get }
The payment application identifier, if any.
paymentTerminalId (read-only)
@property (nonatomic, strong, readonly) BRStringValue *paymentTerminalId;
var paymentTerminalId: BRStringValue! { get }
Unique identifier for the payment processor's terminal.
paymentTransactionId (read-only)
@property (nonatomic, strong, readonly) BRStringValue *paymentTransactionId;
var paymentTransactionId: BRStringValue! { get }
Unique identifier for the payment processor's transaction.
Loyalty & Member
loyaltyProgram (read-only)
@property (nonatomic, readonly) BOOL loyaltyProgram;
var loyaltyProgram: Bool { get }
Whether a loyalty program indication was found on the receipt.
memberNumber (read-only)
@property (nonatomic, strong, readonly) NSString *memberNumber;
var memberNumber: String! { get }
Loyalty member number detected on the receipt, if any.
isInstacartShopper (read-only)
@property (nonatomic, readonly) BOOL isInstacartShopper;
var isInstacartShopper: Bool { get }
Whether the purchase was made by an Instacart shopper.
Promotions & Surveys
qualifiedPromotions (read-only)
@property (nonatomic, strong, readonly) NSArray<BRPromotion *> *qualifiedPromotions;
var qualifiedPromotions: [BRPromotion]! { get }
All promotions that were validated against this receipt (when promotion validation is enabled).
unqualifiedPromotions (read-only)
@property (nonatomic, strong, readonly) NSArray<BRPromotion *> *unqualifiedPromotions;
var unqualifiedPromotions: [BRPromotion]! { get }
All promotions evaluated but not validated against this receipt.
qualifiedSurveys (read-only)
@property (nonatomic, strong, readonly) NSArray<BRSurvey *> *qualifiedSurveys;
var qualifiedSurveys: [BRSurvey]! { get }
All surveys that were validated against this receipt (when survey validation is enabled).
Quality & Validation
ocrConfidence (read-only)
@property (nonatomic, readonly) float ocrConfidence;
var ocrConfidence: Float { get }
Average OCR confidence across all scanned frames, on a scale of 0–100.
serverLookupsCompleted (read-only)
@property (nonatomic, readonly) BOOL serverLookupsCompleted;
var serverLookupsCompleted: Bool { get }
Whether all server lookups (e.g., product intelligence) were completed before results were returned.
foundTopEdge (read-only)
@property (nonatomic, readonly) BOOL foundTopEdge;
var foundTopEdge: Bool { get }
Whether the top edge of the receipt was found on any scanned frame.
foundBottomEdge (read-only)
@property (nonatomic, readonly) BOOL foundBottomEdge;
var foundBottomEdge: Bool { get }
Whether the bottom edge of the receipt was found on any scanned frame.
subtotalMatches (read-only)
@property (nonatomic, readonly) BOOL subtotalMatches;
var subtotalMatches: Bool { get }
Whether the detected subtotal matches the sum of all detected products and coupons.
productsPendingLookup (read-only)
@property (nonatomic, readonly) NSInteger productsPendingLookup;
var productsPendingLookup: Int { get }
Number of products still awaiting intelligence results when the scan session ended. A non-zero value indicates not all products were fully enriched.
isDuplicate (read-only)
@property (nonatomic, readonly) BOOL isDuplicate;
var isDuplicate: Bool { get }
Whether this receipt was identified as a duplicate of a previously scanned receipt. Requires BRScanOptions.detectDuplicates = YES.
isFraudulent (read-only)
@property (nonatomic, readonly) BOOL isFraudulent;
var isFraudulent: Bool { get }
Whether this receipt is believed to be fraudulent. Requires BRScanOptions.detectDuplicates = YES.
duplicateBlinkReceiptIds (read-only)
@property (nonatomic, strong, readonly) NSArray<NSString *> *duplicateBlinkReceiptIds;
var duplicateBlinkReceiptIds: [String]! { get }
The blinkReceiptId values of any receipts this was detected as a duplicate of. Populated when isDuplicate is YES.
E-Receipt
ereceiptOrderNumber (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptOrderNumber;
var ereceiptOrderNumber: String! { get }
Order number for an Amazon or e-receipt order.
ereceiptOrderStatus (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptOrderStatus;
var ereceiptOrderStatus: String! { get }
Order status for an e-receipt order.
ereceiptPurchaseType (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptPurchaseType;
var ereceiptPurchaseType: String! { get }
Type of purchase for an Amazon or e-receipt order.
ereceiptRawHTML (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptRawHTML;
var ereceiptRawHTML: String! { get }
Raw HTML parsed from the e-receipt email.
ereceiptEmailProvider (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptEmailProvider;
var ereceiptEmailProvider: String! { get }
Name of the email provider from which the e-receipt was obtained.
ereceiptMerchantEmail (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptMerchantEmail;
var ereceiptMerchantEmail: String! { get }
The sender address of the e-receipt email.
ereceiptEmailSubject (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptEmailSubject;
var ereceiptEmailSubject: String! { get }
Subject line of the e-receipt email.
ereceiptEmailId (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptEmailId;
var ereceiptEmailId: String! { get }
Internal message ID of the e-receipt email from the email provider.
ereceiptComponentEmails (read-only)
@property (nonatomic, strong, readonly) NSArray<BRScanResults *> *ereceiptComponentEmails;
var ereceiptComponentEmails: [BRScanResults]! { get }
Scan results from component emails when order aggregation is enabled (e.g., multiple shipping confirmation emails for one order).
ereceiptFulfilledBy (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptFulfilledBy;
var ereceiptFulfilledBy: String! { get }
Third-party fulfillment service (e.g., "Instacart"), if any.
ereceiptSubMerchant (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptSubMerchant;
var ereceiptSubMerchant: String! { get }
Sub-merchant name (e.g., "McDonald's" for an Uber Eats order), if any.
ereceiptPOSSystem (read-only)
@property (nonatomic, strong, readonly) NSString *ereceiptPOSSystem;
var ereceiptPOSSystem: String! { get }
Point of sale system used for the order, if any.
ereceiptShippingCosts (read-only)
@property (nonatomic, readonly) float ereceiptShippingCosts;
var ereceiptShippingCosts: Float { get }
Shipping costs for this e-receipt, if any.
ereceiptAuthenticated (read-only)
@property (nonatomic, readonly) BOOL ereceiptAuthenticated;
var ereceiptAuthenticated: Bool { get }
Whether the e-receipt email was authenticated via DKIM or SPF headers.
ereceiptIsValid (read-only)
@property (nonatomic, readonly) BOOL ereceiptIsValid;
var ereceiptIsValid: Bool { get }
Whether the email was identified as an e-receipt rather than a marketing message.
ereceiptAdditionalFees (read-only)
@property (nonatomic, strong, readonly) NSDictionary<NSString *, NSString *> *ereceiptAdditionalFees;
var ereceiptAdditionalFees: [String : String]! { get }
Additional fees (e.g., tips, bag fees) as key-value pairs.
Raw Data
extendedFields (read-only)
@property (nonatomic, strong, readonly) NSDictionary *extendedFields;
var extendedFields: [AnyHashable : Any]! { get }
Additional receipt fields not captured by standard properties.
combinedRawText (read-only)
@property (nonatomic, strong, readonly) NSString *combinedRawText;
var combinedRawText: String! { get }
Cumulative raw OCR text from all scanned frames.
rawBasketText (read-only)
@property (nonatomic, strong, readonly) NSString *rawBasketText;
var rawBasketText: String! { get }
Raw product data results.
rawTripHeaderText (read-only)
@property (nonatomic, strong, readonly) NSString *rawTripHeaderText;
var rawTripHeaderText: String! { get }
Raw text results found at the top of the receipt.
rawTripFooterText (read-only)
@property (nonatomic, strong, readonly) NSString *rawTripFooterText;
var rawTripFooterText: String! { get }
Raw text results found at the bottom of the receipt.
BRShipment
Represents one shipment in an Amazon or e-commerce order.
Declaration
@interface BRShipment : NSObject <BRSerializable>
class BRShipment : NSObject, BRSerializable
Properties
status (read-only)
@property (nonatomic, strong, readonly) NSString *status;
var status: String! { get }
Shipment status (e.g., "Arriving Tomorrow", "Delivered", "Refunded").
products (read-only)
@property (nonatomic, strong, readonly) NSArray<BRProduct *> *products;
var products: [BRProduct]! { get }
Collection of products included in this shipment.
BRSurvey
Represents a survey consisting of a series of multiple-choice or open-ended questions.
Declaration
@interface BRSurvey : NSObject
class BRSurvey : NSObject
Properties
slug (read-only)
@property (nonatomic, strong, readonly, nonnull) NSString *slug;
var slug: String { get }
Unique identifier for this survey.
startDate (read-only)
@property (nonatomic, strong, readonly, nullable) NSDate *startDate;
var startDate: Date? { get }
Survey start date, or nil if no start date is set.
endDate (read-only)
@property (nonatomic, strong, readonly, nullable) NSDate *endDate;
var endDate: Date? { get }
Survey end date, or nil if no end date is set.
rewardValue (read-only)
@property (nonatomic, readonly) float rewardValue;
var rewardValue: Float { get }
Reward value awarded for completing the survey.
questions (read-only)
@property (nonatomic, strong, readonly, nonnull) NSArray<BRSurveyQuestion *> *questions;
var questions: [BRSurveyQuestion] { get }
Array of questions in this survey.
BRSurveyAnswer
Represents a multiple-choice answer option for a survey question.
Declaration
@interface BRSurveyAnswer : NSObject
class BRSurveyAnswer : NSObject
Properties
text (read-only)
@property (nonatomic, strong, readonly, nonnull) NSString *text;
var text: String { get }
The answer text content.
BRSurveyQuestion
Represents one question in a survey.
Declaration
@interface BRSurveyQuestion : NSObject
class BRSurveyQuestion : NSObject
Properties
text (read-only)
@property (nonatomic, strong, readonly, nonnull) NSString *text;
var text: String { get }
The question text.
type (read-only)
@property (nonatomic, readonly) BRSurveyQuestionType type;
var type: BRSurveyQuestionType { get }
The question type (multiple-choice or open-ended).
answers (read-only)
@property (nonatomic, strong, readonly, nonnull) NSArray<BRSurveyAnswer *> *answers;
var answers: [BRSurveyAnswer] { get }
Available answer options when type is BRSurveyQuestionTypeMultipleChoice.
multipleAnswers (read-only)
@property (nonatomic, readonly) BOOL multipleAnswers;
var multipleAnswers: Bool { get }
Whether the respondent can select more than one answer.
userResponse (read-only)
@property (nonatomic, strong, readonly, nonnull) BRSurveyResponse *userResponse;
var userResponse: BRSurveyResponse { get }
The user's response after the survey is completed.
BRSurveyResponse
Captures the user's response to a survey question.
Declaration
@interface BRSurveyResponse : NSObject
class BRSurveyResponse : NSObject
Properties
answersSelected
@property (nonatomic, strong, nonnull) NSArray<NSNumber *> *answersSelected;
var answersSelected: [NSNumber] { get set }
For multiple-choice questions, contains the indexes of selected answers from BRSurveyQuestion.answers.
freeText
@property (nonatomic, strong, nonnull) NSString *freeText;
var freeText: String { get set }
For open-ended questions, contains the text entered by the user.
BRValue
Parent class for all typed values detected on a receipt. Carries the detected value and a confidence score.
Declaration
@interface BRValue : NSObject <BRSerializable>
class BRValue : NSObject, BRSerializable
Properties
confidence (read-only)
@property (nonatomic, readonly) float confidence;
var confidence: Float { get }
OCR confidence score for this value, on a scale of 0–100.
BRStringValue
Child class of BRValue for string values detected on a receipt.
Declaration
@interface BRStringValue : BRValue
class BRStringValue : BRValue
Properties
value (read-only)
@property (nonatomic, strong, readonly) NSString *value;
var value: String! { get }
The detected string value.
BRFloatValue
Child class of BRValue for floating-point values detected on a receipt.
Declaration
@interface BRFloatValue : BRValue
class BRFloatValue : BRValue
Properties
value (read-only)
@property (nonatomic, readonly) float value;
var value: Float { get }
The detected float value.
decimalValue (read-only)
@property (nonatomic, strong, readonly) NSDecimalNumber *decimalValue;
var decimalValue: NSDecimalNumber! { get }
The value rounded to exactly 2 decimal places. Use this for currency display.
BRIntValue
Child class of BRValue for integer values detected on a receipt.
Declaration
@interface BRIntValue : BRValue
class BRIntValue : BRValue
Properties
value (read-only)
@property (nonatomic, readonly) NSInteger value;
var value: Int { get }
The detected integer value.