SDKs & Bibliotecas
Mobile

API de Nota Fiscal para iOS e iPadOS (Swift)

Integração nativa com URLSession, async/await, SwiftUI e geração de DANFE em PDF.

Guia de integração da API fiscal do NFER para iOS (Swift). Ideal para aplicativos nativos de iPhone, iPad e força de vendas que precisam emitir notas fiscais (NF-e e NFC-e) e visualizar ou imprimir o DANFE em PDF.

Swift 5.9+ / Swift ConcurrencyiOS 15+ / iPadOSURLSession nativa (Zero dependências)

1. Modelos de Dados Codable em Swift

Estruturas Swift com conformidade Codable para serializar o rascunho de nota e desserializar a resposta da SEFAZ:

import Foundation
struct NferItem: Codable {
let descricao: String
let ncm: String
let unidade: String
let quantidade: Double
let valorUnitario: Double
}
struct NferDestinatario: Codable {
let tipoPessoa: String
let cpfCnpj: String
let nome: String
}
struct NferDraftRequest: Codable {
let naturezaOperacao: String

2. Cliente Fiscal com async/await (NferClient.swift)

Utilizando a API moderna de concorrência com async/await do Swift:

import Foundation
actor NferClient {
private let apiKey: String
private let baseUrl = "https://api.nfer.me"
init(apiKey: String) {
self.apiKey = apiKey
}
func emitirNota(draft: NferDraftRequest) async throws -> NferResponse {
guard let url = URL(string: "\(baseUrl)/v1/nfe") else {
throw URLError(.badURL)
}
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

3. Exemplo em SwiftUI (Botão de Emissão e Visualização do DANFE)

Chamada da API disparada diretamente por um botão de ação no app:

import SwiftUI
import PDFKit
struct CheckoutView: View {
@State private var isLoading = false
@State private var chaveAutorizada: String?
let client = NferClient(apiKey: "sua_chave_a0eebc99")
var body: some View {
VStack(spacing: 20) {
Button("Emitir Nota Fiscal (SEFAZ)") {
Task {
await emitir()
}
}
.disabled(isLoading)
.buttonStyle(.borderedProminent)

Compartilhamento AirPrint e PDF

Os PDFs de DANFE gerados pela API NFER são 100% compatíveis com o framework nativo PDFKit e prontos para impressão direta via UIPrintInteractionController no iOS.