Production checklist
The list of things to verify before your integration takes its first real fiscal traffic. Some items are technical, some are operational, none are optional if you care about uptime + auditability.
Work top-to-bottom. Each step references the underlying API or dashboard surface so you can verify by clicking, not just by ticking.
1. Credentials + identity
Production cert is uploaded + valid.
POST /api/v1/certificatesreturns200with the parsed subject RNC matching your DGII-registered entity. The cert'snotAfteris at least 60 days out — if it's closer, rotate now (DGII's CCSD certifier issues new ones in ~3 business days, you don't want to be doing that under deadline).Two API keys exist, with different labels.
One in active use by your prod deployment, one ready to roll. Mint via /app/dashboard → Card 2. If you only have one, you can't rotate without downtime.Onboarding completed — fiscaliacoreTenantId is set on every business.
Per business:GET /api/v1/businesses/{id}returns a non-nullfiscaliacoreTenantId. If null, the business hasn't been provisioned and any e-CF issuance for it will 503.Subscription is ACTIVE (or you've deliberately decided to stay on Sandbox).
GET /api/v1/platform/billing/subscriptionreturnsstatus: ACTIVEwith acurrent_period_endin the future. Check the dashboard's Subscription card — Sandbox is fine for evaluation but caps at 100 e-CF/month CERT-only, so production traffic to a real RNC needs a paid tier. If your subscription isPAST_DUE, the API will block on day 8 — update your payment method in PayPal before then.
2. Receiver gateway
The wildcard subdomain {rnc}.ecf.fiscaliacore.com is how DGII (and peer emisores) reach you with inbound traffic — ACECFs, inbound e-CFs, semilla validations. If this isn't live, you cannot receive Aprobación Comercial messages.
DNS resolves for at least one of your RNCs.
dig +short 40209547971.ecf.fiscaliacore.comreturns an A record. The wildcard cert covers it automatically.Inbound test from your laptop reaches the gateway.
curl -i https://{rnc}.ecf.fiscaliacore.com/fe/recepcion/api/ecfreturns405 Method Not Allowed(correct — POST is the only verb). A502or DNS failure means routing isn't live.Your callback URL is registered and reachable.
GET /api/v1/receivers/{rnc}returns your registeredcallbackUrl. Hit it from a non-VPN connection — it must return2xxto aPOST(the body shape is in Webhook v1 docs). If your URL is behind auth, fiscaliacore's Ed25519 signature on every push is your auth.The HMAC secret has been rotated post-onboarding.
The initial secret returned at registration is OK for the first 24 hours, but should be rotated viaPOST /api/v1/receivers/{rnc}/rotateonce you've verified your end can verify signatures. Store the new secret in your secret manager, never in code.
Webhook 404 is the most common cert-day surprise. If your callback URL points at a business whose Business row in your DB doesn't exist (RNC typo, deleted, etc.), fiscaliacore pushes an ACECF, you return 404, and the Aprobación Comercial vanishes into a retry queue. Send a dummy ACECF to your callback URL from curl before you go live — 200/204 is the only acceptable response.
3. Quotas + caps
You know which tier you're on.
/reference/pricing lists Developer / Growth / Business / Enterprise. The tier sets your monthly included e-CF count + overage rate. Pick deliberately — overage adds up.Your soft + hard caps are set to numbers you can sleep through.
Default: 5× tier price (soft) / 10× tier price (hard). If your traffic is bursty, raise the soft cap so you don't get paged at 3am for a normal spike. The hard cap should still be a circuit breaker, not the operating ceiling.Cap notifications go somewhere a human reads.
Soft-cap alerts email your admin address. Pipe that into your incident channel — soft cap means "your bill is doubling, look at this." Hard cap means "your API key just got revoked, look at this RIGHT NOW."
4. Observability
Outbound calls are traced.
EveryPOST /api/v1/ecf/issue-statelessshould emit a span with the e-CF type, the TrackID, and the DGII verdict. If you can't filter your trace store bydgii.estado:RECHAZADO, you can't see your rejection rate.Inbound webhook deliveries are logged.
EveryPOSTto your callback URL should land in a log with: source RNC, eCF number, signature-verified verdict, persistence outcome. If your fiscaliacore push retries fire 3 times before you notice, that's an observability gap.The receiver gateway healthcheck pings every 60s.
A simpleGET https://{rnc}.ecf.fiscaliacore.com/fe/healthfrom your monitoring should return200. If it goes red, your inbound is down and you'll start losing ACECFs.
5. Operational hygiene
On-call docs reference the right URLs.
The runbook should nameapi.fiscaliacore.com(your API) and{rnc}.ecf.fiscaliacore.com(your receiver), not the staging URLs you used during integration. Audit your runbook forlocalhostandcert.prefixes.The cert renewal date is in someone's calendar.
DGII-issued certs are typically valid for 12 months. Set a reminder 60 days before expiry. Rotation isPOST /api/v1/certificateswith the new.p12— the old one is grace-period-active until the new one's session unlocks.You have a tested fallback for "fiscaliacore is down."
If our API is unreachable for > 5 minutes, your customers can't issue e-CFs. The fallback is usually: queue the issuance request internally + retry. Do NOT silently fail the customer's invoice — DGII's contingency rules give you 24h to submit, but only if you've actually stored the intent.Production environment is switched from CERT to PROD.
EveryEcfIssueRequestcarries anenvironmentfield. If your prod traffic is going toCERT, you're burning your CERT quota + your e-CFs aren't legally valid. Audit the value at your call site, not at config-load time.
Final dry run
Before you flip your traffic over:
- From a production-shaped environment, issue an E32 (Consumidor Final, small amount) to a test buyer.
- Wait up to 5 minutes for the ACECF push to land at your callback URL.
- Verify the ACECF is persisted on your side + the original e-CF's status is
Aprobado. - Cancel the test invoice + verify the E34 Nota de Crédito flow.
If all four steps work, you're cert-ready. If any of them fail, the failure mode shows you which checklist section to revisit.
Where to go next
- Mid-integration? → Integration guide.
- Hit an error you don't recognise? → Error codes.
- Want to understand the architecture before you flip the switch? → Stateless bridge model.